Quindi max-width va esclusa a priori perchè calcola 100% dell'immagine
No, probabilmente non sono stato chiaro, il valore percentuale è riferito sempre al contenitore, sia per max-width sia per width. La proprietà max-width però consiste nel fatto di limitare la larghezza (width) se il suo valore supera quello impostato (nel tuo caso il 100% del contenitore).

usando semplicemente width:100% (invecedi max-width) mi risolve il problema delle piccole, ma crea grandi casini per quelle grandi perchè evidentemente si prende la classe img di tutto il sito.
Cerca di non fare confusione, il selettore img non è un selettore di "classe" ma di "tipo" (e ti rinvito a studiarti qualche guida di base riguardo i selettori).

Se stai usando questa regola:
codice:
img {
    width: 100%;
    height: auto;
}
sarà applicata indistintamente a tutti gli elementi <img>.

E' chiaro che in questo caso stai usando un selettore troppo generico; è opportuno magari costruire un selettore più specifico in modo da "identificare" solo le immagini a cui vuoi applicare tali proprietà.



PS:
Ti direi esattamente cosa fare ma non è mio interesse dare ogni volta la minestra pronta. Se poi qualcun altro vuole farlo, ben venga.

Personalmente preferisco invece che tu riesca ad arrivarci da solo, anche in base a ciò che ho indicato. Ti invito perciò a studiare e ragionarci sopra per arrivare ad una possibile soluzione, dal momento che si tratta comunque di nozioni di base; diversamente torneresti ad inciampare sempre sugli stessi problemi senza mai capire come risolvere.

Buone Feste