Van MySQL Documentatie :
Het verschil tussen CHAR en VARCHAR waarden is de manier waarop ze worden opgeslagen, CHAR (10) vereist 10 bytes opslagruimte, ongeacht het aantal tekens dat u gebruikt, omdat de gegevens rechts zijn gevuld met spaties, VARCHAR (10) duurt slechts 1 byte (in een tekenset van 1 byte) + voorvoegsel voor lengte (1 als de lengte 255 of minder is, anders 2... Ik weet niet waarom key_len voor EXPLAIN voeg 2 bytes toe)
Ik begrijp niet wat je bedoelt met volgspaties, hoewel ik me kan voorstellen dat je doelt op het teveel aan volgspaties, met VARCHAR deze worden afgekapt met een waarschuwing, ondertussen in CHAR kolommen deze spaties worden stil afgekapt, dit heeft een bepaalde reden CHAR worden opgeslagen met aan het einde blanco's.
Over tekenset in deze link u kunt zien dat het aantal tekens voor de CHAR of VARCHAR is hetzelfde, hoewel uw opslag 1 tot 4 bytes per teken nodig heeft, hier
is de lijst met ondersteunde tekensets en hier de bytes per teken.
Wat ik heb gelezen over verschillende rijenindelingen voor InnoDB
Kenmerken van redundante rij-indelingen :
COMPACTE kenmerken van rij-indeling :