Ответ 1
Все три являются просто разными способами представления одного и того же, поэтому нет языков, поддерживаемых одним, а не другим.
Иногда UTF-16 используется системой, с которой вам нужно взаимодействовать - например, Windows API использует UTF-16 изначально.
В теории UTF-32 может представлять любой "символ" в одном 32-битовом целое, без необходимости использовать более одного, тогда как UTF-8 и UTF-16 должны использовать более одного 8-битного или 16 -битное целое число для этого. Но на практике, сочетая и не сочетая варианты некоторых кодовых точек, это не так.
Одно из преимуществ UTF-8 над другими заключается в том, что если у вас есть ошибка, при которой вы считаете, что число 8-, 16- или 32-битных целых чисел соответственно совпадает с числом кодовых точек, оно становится очевидно, быстрее с UTF-8 - что-то не получится, как только у вас будет какой-то не-ASCII-код там, тогда как с UTF-16 ошибка может остаться незамеченной.
Чтобы ответить на ваш первый вопрос, вот список сценариев, которые в настоящее время не поддерживаются Unicode: http://www.unicode.org/standard/unsupported.html