Один из способов сделать это - добавить еще один столбец, который содержит вторую букву каждой строки в столбце col2, и отсортировать по нему (это единственный порядок сортировки, который я нашел подходящим для вашего вопроса):
d1 = {'col1': ['A', 'B', 'C', 'D', 'E'], 'col2': ['RED', 'GREEN', 'AMBER', 'RED', 'GREEN']}
df1 = pd.DataFrame(data=d1)
df1['col3'] = [i[1] for i in df1['col2']]
df1 = df1.sort_values(by='col3')
Результат, исключив 3-й столбец, похож на тот, который вы опубликовали