Indipendentemente dalla lunghezza definita per la colonna varchar, lo spazio di archiviazione utilizzato da una colonna vuota sarà lo stesso.
I tipi CHAR e VARCHAR
Questo riguarda solo lo spazio utilizzato dalla colonna varchar e non considera lo spazio di archiviazione totale utilizzato dalla riga, i suoi indici, le chiavi primarie e altre colonne.
Come menziona ypercube nel suo commento, ci sono ulteriori considerazioni per l'archiviazione di righe nel suo insieme quando è presente almeno una colonna nullable.
Struttura della riga fisica Innodb
La parte a lunghezza variabile dell'intestazione del record contiene un vettore di bit per indicare le colonne NULL. Se esistono da 9 a 15 colonne che possono essere NULL, il vettore di bit utilizza due byte.)
...
La parte a lunghezza variabile dell'intestazione contiene anche le lunghezze delle colonne a lunghezza variabile. Ogni lunghezza richiede uno o due byte, a seconda della lunghezza massima della colonna. Se tutte le colonne dell'indice NON sono NULL e hanno una lunghezza fissa, l'intestazione del record non ha una parte a lunghezza variabile
E sì, lo spazio di archiviazione utilizzato cambia in base al tipo scelto, è fisso o variabile, le regole di confronto e altri fattori come il motore.
MySQL fornisce consigli sull'ottimizzazione della memorizzazione dei dati qui: Ottimizzazione della dimensione dei dati
Aggiornare
Un'ulteriore considerazione con varchar e questa è memoria. In MySQL è importante limitare il più possibile le dimensioni di una colonna di lunghezza variabile. Anche se la colonna è variabile e lo spazio di archiviazione utilizzato è variabile, MySQL alloca la memoria in blocchi fissi per memorizzare i valori. Ad esempio varchar (200) utilizzerà più memoria di varchar (5). Questo non è un problema di spazio di archiviazione, ma comunque qualcosa da considerare quando si definiscono le colonne.