Hlavním rozdílem je přesnost řazení (při porovnávání znaků v jazyce) a výkon. Jediný speciální je utf8_bin, který slouží k porovnávání znaků v binárním formátu.
utf8_general_ci je poněkud rychlejší než utf8_unicode_ci , ale méně přesné (pro řazení). kódování utf8 konkrétního jazyka (například utf8_swedish_ci ) obsahují další jazyková pravidla, díky nimž jsou pro tyto jazyky nejpřesnější k řazení. Většinu času používám utf8_unicode_ci (Dávám přednost přesnosti před malými vylepšeními výkonu), pokud nemám dobrý důvod preferovat konkrétní jazyk.
Více o konkrétních znakových sadách unicode si můžete přečíst v příručce MySQL - https://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html