<p>What are the typical average bytes-per-character rates for different unicode encodings in different languages?</p>

<p>E.g. if I wanted the smallest number of bytes to encode some english text, then on average UTF-8 would be 1-byte per character and UTF-16 would be 2 so I'd pick UTF-8.</p>

<p>If I wanted some Korean text, then UTF-16 might average about 2 per character but UTF-8 might average about 3 (I don't know, I'm just making up some illustrative numbers here).</p>

<p>Which encodings yield the smallest storage requirements for different languages and character sets?</p>

For any given language, your bytes-per-character rates are fairly constant, because most languages are allocated to contiguous code pages. The big exception is accented Latin characters, which are allocated higher in the code space than the unaccented forms. I don't have hard numbers for these.
For languages with contiguous character allocation, there is a
table with detailed numbers for various languages
on Wikipedia. In general, UTF-8 works well for most small character sets (except the ones allocated on high code pages), and UTF-16 is great for two-byte character sets.
If you need denser compression, you may also want to look at
Unicode Technical Note 14
, which compares some special-purpose encodings designed to reduce data size for a variety of languages. But these techniques aren't especially common.