The regional indicator symbols are a set of 26 alphabetic Unicode characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2 two-letter country codes in a way that allows optional special treatment.

These were defined by October 2010 as part of the Unicode 6.0 support for emoji, as an alternative to encoding separate characters for each country flag. Although they can be displayed as Roman letters, it is intended that implementations may choose to display them in other ways, such as by using national flags. The Unicode FAQ indicates that this mechanism should be used and that symbols for national flags will not be directly encoded.

They are encoded in the range  to  within the Enclosed Alphanumeric Supplement block in the Supplementary Multilingual Plane.

Emoji flag sequences

A pair of regional indicator symbols is referred to as an emoji flag sequence (although it represents a specific region, not a specific flag for that region).

Out of the 676 possible pairs of regional indicator symbols (26 × 26), only 270 are considered valid Unicode region codes.
These are a subset of the region sequences in the Common Locale Data Repository (CLDR):
 All 256 regular region sequences in the CLDR
 249 officially assigned ISO 3166-1 alpha-2 codes
 6 exceptional reservations (Ascension Island, Clipperton Island, Diego Garcia, Ceuta and Melilla, Canary Islands, and Tristan da Cunha)
 1 user-assigned temporary country code (Kosovo)
 Two of the 35 macroregion sequences in the CLDR (EU and UN)
 All 12 deprecated region sequences in the CLDR (strongly discouraged—intended for backward compatibility only)

A separate mechanism (emoji tag sequences) is used for regional flags, such as England 🏴󠁧󠁢󠁥󠁮󠁧󠁿, Scotland 🏴󠁧󠁢󠁳󠁣󠁴󠁿, Wales 🏴󠁧󠁢󠁷󠁬󠁳󠁿, Texas 🏴󠁵󠁳󠁴󠁸󠁿 or California 🏴󠁵󠁳󠁣󠁡󠁿 It uses  and formatting tag characters instead of regional indicator symbols. It is based on ISO 3166-2 regions with hyphen removed and lowercase, e.g. GB-ENG → gbeng, terminating with . Flag of England is therefore represented by a sequence U+1F3F4, U+E0067, U+E0062, U+E0065, U+E006E, U+E0067, U+E007F. In the tenth revision the Unicode consortium was considering  instead, but from eleventh onwards it is black. Some vendors choose to include custom zero-width joiner sequences that only show up on their platform, such as WhatsApp and their Refugee Nation Flag 🏳️‍🟧‍⬛️‍🟧.

Unicode block

Background 
In 2007 a draft proposal was presented to the Unicode Technical Committee to encode emoji symbols, specifically those in widespread use on mobile phones by Japanese telecommunications companies DoCoMo, KDDI, and SoftBank.
The proposed symbols included ten national flags: China (🇨🇳), Germany (🇩🇪), Spain (🇪🇸), France (🇫🇷), the UK (🇬🇧), Italy (🇮🇹), Japan (🇯🇵), South Korea (🇰🇷), Russia (🇷🇺), and the United States (🇺🇸).
Encoding these flags but not other countries' flags was considered, by some, as prejudicial.
One rejected solution was to encode the ten flags but call them "EMOJI COMPATIBILITY SYMBOL-n" and represent them visually in the Standard as "EC n" instead of showing the flags they represent. 
Another rejected solution would have allocated 676 codepoints (26×26) for each possible two letter combination of A–Z.  They would represent political entities based on ISO 3166 such as "FR" for France or Internet ccTLDs (country code top-level domains) such as "EU" for the European Union.

The accepted solution was to add 26 characters for letters used for the representation of regional indicators, which used in pairs would represent the ten national flags and possible future extensions.
Per the Unicode Standard 
specifically the ten national flags: 🇨🇳, 🇩🇪, 🇪🇸, 🇫🇷, 🇬🇧, 🇮🇹, 🇯🇵, 🇰🇷, 🇷🇺, and 🇺🇸.

See also 
Flag icons for languages

References

Further reading 

Unicode special code points
Country codes
Emoji
Representations of flags