Some locales just have a base language, like English [en], Arabic [ar] or German [de]. This is called a base language locale.
Where a language is typically written in multiple scripts, such as Cyrillic [Cyrl] or Latin [Latn], then it may have a script specified as well, such as Serbian (Cyrillic) [sr_Cyrl] or Serbian (Latin) [sr_Latn]. Each language+script combination is treated as a unit, since people don't want mixtures of different scripts in the same data. A script is only relevant if the language is typically written in multiple scripts, so does not apply to languages such as English or Russian.
Locales may also have a region specified, to allow for distinctions on that basis. For example, English (US) [en_US] vs English (UK) [en_GB], or Serbian (Latin, Montenegro) [sr_Latn_ME]. Regions may be countries such as China [CN], parts of countries such as Hong Kong [HK] or multicountry regions such as Latin America .
The content for the base language locale should be as widely usable (neutral) as possible, but must also be usable without modification what is called the default content locale. That default content locale will have an additional field, a script or region. The region is typically the one with the most speakers of that language. For example