utf8 - это charset, способ хранения символов из набора unicode. От одного байта до трёх на один символ.
utf8_bin, utf8_general_ci, utf8_unicode_ci - это collations. Способ описания порядка букв для сортировок, поиска и приведения к верхнему/нижнему регистру
utf8_bin - всё регистрово зависимо. При поиске 'A' != 'a', сортировка - вроде в порядке следования в таблице
utf8_general_ci, utf8_unicode_ci - более умные коллации. Они уже будут учитывать что при поиске 'AaA' == 'aaa', различаются только способами сортировки
utf8_general_ci работает быстрее, но сортировка не учитывает некоторые особенности в порядке букв в языках, использующих сходный набор (типа немецкого и французского)
utf8_unicode_ci - чуть медленнее, но утверждается, что сортировки там будут правильные во всех случаях, когда это возможно.