Det beror på vilken lagringsmotor du använder.
I MyISAM-format innehåller varje radrubrik ett bitfält med en bit för varje kolumn för att koda NULL-tillståndet. En kolumn som är NULL tar fortfarande upp utrymme, så NULL minskar inte lagringen. Se https://dev.mysql.com/doc/internals/ sv/myisam-introduction.html
I InnoDB har varje kolumn en "fältstartoffset" i radhuvudet, vilket är en eller två byte per kolumn. Den höga biten i det fältets startoffset är på om kolumnen är NULL. I så fall behöver kolumnen inte lagras alls. Så om du har många NULLs bör ditt lagringsutrymme minskas avsevärt. Se https://dev.mysql.com/doc/internals/en/innodb-field-contents.html
EDIT:
NULL-bitarna är en del av radrubrikerna, du väljer inte att lägga till dem.
Det enda sättet jag kan föreställa mig att NULLs förbättrar prestandan är att i InnoDB kan en sida med data passa fler rader om raderna innehåller NULL. Så dina InnoDB-buffertar kan vara mer effektiva.
Men jag skulle bli mycket förvånad om detta ger en betydande prestandafördel i praktiken. Att oroa sig för effekten NULL har på prestanda är mikrooptimering. Du bör fokusera din uppmärksamhet någon annanstans, i områden som ger större valuta för pengarna. Till exempel att lägga till väl valda index eller öka tilldelningen av databascache.