Что касается transition, о ненужности запятых знаю, иногда забываю. Впрочем, особой разницы не вижу. Насчет того что изначально не задан цвет заливки, так и задумано для более легкой стилизации.
Некоторое время не мог понять почему ваш пример работает, а мой - нет, хотя между ними нет особой разницы. И обнаружил ещё одну интересную вещь - если самому спрайту вместо display: none задать width: 0, height: 0, то стили опять не работают. А с display: none всё ок
Нельзя давать паддинг элементам, так как отступ довольно большой, а я верстаю так, чтобы можно было без проблем добавлять новые типичные элементы, в даном случае пункты меню. С псевдоэлементом хорошая идея, надо попробовать. А насчет того что это безобразие - согласен, но как-бы не я рисовал)