Here's my description of Unicode. Please correct and comment.
Unicode separates the representation of a character from the mechanism of storing a character. This is different from ANSI in which each character is represented by a byte.
An ANSI code page maps characters to byte representations. Unicode maps characters to code points. A code point is an abstract concept. It is the responsibility of the encoding scheme to represent the Unicode code points in bytes.
There are many Unicode encoding schemes. Some encoding schemes use a fixed number of bytes to represent a Unicode code point. This approach must balance the number of code points that the encoding can represent and the amount of storage space required. Other encoding schemes use a variable number of bytes to represent a Unicode code point. This approach complicates the parsing of the data but they are avoid the 'scope of representation'/'storage space' constraint that fixed byte length encodings suffer.
UTF-8 is the most common Unicode encoding. The popularity of UTF-8 is due to the fact that it is compatible with ASCII. ASCII is a subset of ANSI which contains the English alphabet, numerals and common punctuation. UTF-8 is a variable length encoding and is capable of encoding all Unicode code points.