L'occupazione dipende dal charset usato. 255 sono i caratteri visualizzabili ma l'occupazione di spazio sara' differente a seconda che si tratti di un charset single o multi byte.

Il campo varchar e' dinamico, il campo char e' fisso.

Se cambi cosa? se cambi il tipo potrebbe succedere di tutto, se cambi la sola dimensione mantenendo il tipo non succede nulla se il campo modificato e' maggiore del precedente.