Смотри str это массив типа String, т.е. к примеру индекс 0 - строка (маша), индекс 1 - строка (петя), индекс 2 строка (вася).
когда к массиву обращаются по индексу str[1] - это петя. str[2] - это вася, str[0] - это маша. Т.е. то, что в квадратных скобках - это номер позиции в этом массиве (начинается с нуля).
Т.е. получаем str1[sortNumber - 1] это тоже самое, что и str[1] или 2 или 3, только в скобках идет вычисление этого номерa.
sortNumber имеет в том контексте свой номер и минус 1 = число, которое станет в квадратные скобки.
Идем дальше. После этих вычислений на эту строку добавляется функция, т.е. к примеру имеем массив str1 на позиции "х", где находятся маша, вася или петя применяется функция .charAt(0).
Идем в гугл и смотрим, что такое .charAt - получаем "charAt(int index) method returns the character at the specified index in a string"
Т.е. charAt возвращает "букву", не слово, a char на определенном индексе строки. charAt(0) - нулевая позиция в строке.
Если конкретно взять пример с васей(0), машей(1), петей(2), то
str1[2].charAt(0) - это первая буква от пети, тоесть "п".
Обьяснял как можно проще, не кидайте тапками :D