Отличие ORDER by 1 от ORDER by IF(somefield='foobar', 1,0)?
select fieldname /*, ... */ from tablename order by 1
Это сокращённый вариантselect fieldname /*, ... */ from tablename order by fieldname
Цифра указывает на порядковый номер поля в этом селекте. Синтаксис как сами заметили неочевидный, так что лучше не использовать.
ORDER by  IF(name='denis', 1,0) , как и любое другое выражение - это вычисление условия или выражение и сортировка по результату этого выражения.
Эквивалентselect IF(name='denis', 1,0) as sortfield, /*fields*/ from tablename order by sortfield
Все логично. Второй order нацелен на столбец, в котором 1 стоит только там, где условие выполнено, а на остальных местах стоит ноль. Сортировка по этому столбцу приводит к очевидному всплытию этой строки.