Независимо от длины, определенной вами для столбца varchar, объем памяти, используемый пустым столбцом, будет одинаковым.
Типы CHAR и VARCHAR
Это касается только пространства, используемого столбцом varchar, и не учитывает общее пространство хранения, используемое строкой, ее индексами, первичными ключами и другими столбцами.
Как упоминает ypercube в своем комментарии, существуют дополнительные соображения относительно хранения строк в целом, когда присутствует хотя бы один обнуляемый столбец.
Innodb Физическая Структура Рядов
Часть переменной длины заголовка записи содержит битовый вектор для указания столбцов NULL. Если имеется от 9 до 15 столбцов, которые могут иметь значение NULL, битовый вектор использует два байта.)
...
Часть заголовка переменной длины также содержит длины столбцов переменной длины. Каждая длина занимает один или два байта, в зависимости от максимальной длины столбца. Если все столбцы в индексе NOT NULL и имеют фиксированную длину, заголовок записи не имеет части переменной длины
И да, объем используемого хранилища изменяется в зависимости от выбранного вами типа, фиксированного или переменного, параметров сортировки и других факторов, таких как механизм.
MySQL дает рекомендации по оптимизации хранения данных здесь: Оптимизация размера данных
Обновить
Еще одно соображение с varchar и это память. В MySQL важно максимально ограничить размер столбца переменной длины. Несмотря на то, что столбец является переменным, а используемое пространство хранения является переменным, MySQL выделит память в фиксированных чанках для хранения значений. Например, varchar (200) будет использовать больше памяти, чем varchar (5). Это не проблема с объемом памяти, но все же нужно учитывать при определении столбцов.