Storage space requirements for a varchar(40) column to store 'abcd' with charset 'ucs2' and 'utf8mb4'?
abcd is all English, so:  9 bytes for ucs2; 5 bytes for utf8.  But...
UCS2 uses 2 byte per character (at least for 'western' letters).  I think it takes 4 bytes for most Asian characters.
utf8 (or utf8mb4) is a variable-length encoding.  English letters take 1 byte each; most European text takes 1 or 2 bytes per character.  Asian takes 3, sometimes 4 bytes per character.
latin1 has only 1-byte characters, so it is limited to English, plus some accented European letters.
But, but...
VARCHAR(40) stores up to 40 characters (not bytes) in whatever encoding is being used.  The disk space be 1 byte for length plus up to 4*40 bytes for text.  A long example would be 40 Emoji, taking 161 bytes.
&lt;opinion&gt;
There is virtually no reason to use the CHARACTER SET ucs2 (or ucs4).  In particular, anything involving unicode or utf8 should use utf8mb4.
&lt;/opinion&gt;
But But But...
Re your comment about 10 bytes -- InnoDB will sometimes use 1 byte for the length, sometimes 2.  But the decision is based on all the columns in the table.  Your &quot;40&quot; does not force a 2-byte length, but some other column might.
The documentation says &quot;For example, a VARCHAR(255) column ... (up to 510 bytes)&quot;.  So it needs 2 bytes since the max byte length is &gt;255.  Your example is with &quot;VARCHAR(40)&quot;, which is &quot;up to 80 bytes&quot; (&lt;=255).