Флоаты прекрасно справляются с этой задачей, пусть и создавались они немного с иной целью (сетка того же Bootstrap 3 сделана на float'ах и, кстати, автор топика по сути её и использует). Отрицательные отступы также убирают пробелы между инлайн блоками, однако это весьма ненадёжный способ, поскольку приходится подбирать значение отступа в зависимости от размера шрифта родителя, и если в будущем тот увеличится, то крайний пункт "уползёт" вниз. С флексами согласен на все 100!
Ответ верный. От себя добавлю: если вы пытались таким образом убрать маркеры у элементов списка, то делали это неправильно. Для этого существует значение list-style со свойством none, которое можно прописать .main-menu .sub-menu.
Спасибо, что раскрыли мне глаза, указав на detectmobilebrowsers.com/download/apache. Я просто не заметил его, привык работать с javascript. Файл конфигурации вполне подошел.