En realidad se hace mirando el valor hexadecimal de cada caracter UTF-8 que forma parte de la cadena. Claro que dicho ordenamiento se hizo respetando el orden alfabético, para no volver locos al personal.
Aquí pone el valor hexadecimal de cada uno de ellos:
http://www.utf8-chartable.de/
Comparar dos cadenas es mirar el valor hexadecimal de cada caracter de cada una de ellas, comparándola con el caracter en la misma posición de la otra cadena. Se miran uno a uno y de izquierda a derecha. La primera pareja de caracteres que no sean iguales decidirá el orden de una cadena con respecto a la otra.
Por si no queda claro, el valor hexadecimal es un número en base 16, asi que comparar dos valores hexadecimales es comparar dos números, que por cierto es una de las muy pocas operaciones booleanas que sabe realizar perfectamente un procesador.