Regardless of the length you define for your varchar column, the storage space used by an empty column will be the same.
The CHAR and VARCHAR Types
This only addresses the space used by the varchar column and does not consider the total storage space used by the row, its indexes, primary keys and other columns.
As ypercube mentions in his comment, there are additional considerations for the row storage as a whole when at least one nullable column is present.
Innodb Physical Row Structure
The variable-length part of the record header contains a bit vector
for indicating NULL columns. If there are anywhere from 9 to 15
columns that can be NULL, the bit vector uses two bytes.)
The variable-length part of the header also contains the lengths of
variable-length columns. Each length takes one or two bytes, depending
on the maximum length of the column. If all columns in the index are
NOT NULL and have a fixed length, the record header has no
And yes, the storage space used changes based on the type you choose, is it fixed or variable, the collation and other factors such as the engine.
MySQL makes recommendations on optimizing data storage here : Optimizing Data Size
One additional consideration with varchar and that's memory. It is important in MySQL to limit the size of a variable length column as much as possible. Even though the column is variable and the storage space used is variable, MySQL will allocate memory in fixed-chunks to store values. For example varchar(200) will use more memory that varchar(5). This is not a storage space issue, but still something to consider when defining your columns.