Isso é discutido no capítulo do manual do MySQL em Requisitos de armazenamento . Não há resposta simples; depende do tipo de dados da coluna, se a coluna é indexada; e o mecanismo de armazenamento. O impacto de usar NULL para uma coluna pode variar de nada a vários bytes (dependendo de quantas outras colunas também podem ser NULL).
O impacto no armazenamento de declarar uma coluna como aceitando NULL e de realmente armazenar um valor NULL é provavelmente menor. Ter uma coluna com muitos valores NULL geralmente indica a necessidade de (mais) normalização.
A regra básica é projetar seu esquema com base nas propriedades dos dados, não no impacto no armazenamento. Conserte as coisas apenas se elas se tornarem um problema.