Independientemente de la longitud que defina para su columna varchar, el espacio de almacenamiento utilizado por una columna vacía será el mismo.
Los tipos CHAR y VARCHAR
Esto solo aborda el espacio utilizado por la columna varchar y no considera el espacio de almacenamiento total utilizado por la fila, sus índices, claves primarias y otras columnas.
Como ypercube menciona en su comentario, hay consideraciones adicionales para el almacenamiento de filas en su conjunto cuando al menos una columna anulable está presente.
Estructura de fila física de Innodb
La parte de longitud variable del encabezado del registro contiene un vector de bits para indicar columnas NULL. Si hay entre 9 y 15 columnas que pueden ser NULL, el vector de bits usa dos bytes).
...
La parte de longitud variable del encabezado también contiene las longitudes de las columnas de longitud variable. Cada longitud toma uno o dos bytes, dependiendo de la longitud máxima de la columna. Si todas las columnas del índice NO SON NULAS y tienen una longitud fija, el encabezado del registro no tiene una parte de longitud variable
Y sí, el espacio de almacenamiento utilizado cambia según el tipo que elija, es fijo o variable, la clasificación y otros factores, como el motor.
MySQL hace recomendaciones para optimizar el almacenamiento de datos aquí: Optimización del tamaño de datos
Actualizar
Una consideración adicional con varchar y eso es memoria. Es importante en MySQL limitar el tamaño de una columna de longitud variable tanto como sea posible. Aunque la columna es variable y el espacio de almacenamiento utilizado es variable, MySQL asignará memoria en fragmentos fijos para almacenar valores. Por ejemplo, varchar (200) usará más memoria que varchar (5). Este no es un problema de espacio de almacenamiento, pero aún es algo a considerar al definir sus columnas.