Самый правильный способ разнести блоки в разные стороны

Способ основывается на применении флекс-контейнера, внутри которого находятся два блока. Оперируя свойством justify-content, можно добиться различных вариантов размещения этих двух блоков внутри флекс-контейнера. Нас же сейчас интересует значение "space-between", равномерно распределяющее блоки по ширине флекс-контейнера, прижимая к его краям первый и последний блоки. Ширина блоков будет выбираться автоматически, в зависимости от контента, содержащегося внутри блока. Кроме того, ширину блока, при необходимости, можно зафиксировать свойством width, если это потребуется.

Этот метод используется, в основном, для построения "шапки" сайта, но может быть использован и в других частях сайта или веб-приложения. Для полного понимания работы флекс-контейнеров, рекомендую поиграть в игру Flexbox Froggy

Пример:

Код:

<div class="container">
  <div class="box-left">
    <span>Brand</span>
    <span>Stores</span>
    <span>Actions</span>
    <span>Contacts</span>
  </div>
  <div class="box-right">
    <span>Settings</span>
    <span>Account</span>
  </div>
</div>
{
 /* Задаём флекс-бокс (позволяет влиять на расположение дочерних элементов) */
 display: flex;
 /* Говорим элементам встать так, чтобы между ними, по возможности, образовывалось расстояние */
 justify-content: space-between;
}

  .box-left {
    /* Здесь можно задать какие-то стили для левого блока */
  }

  .box-right {
    /* Здесь можно задать какие-то стили для правого блока */
  }

Задача

Сделать шапку для сайта habr.com так, чтобы правая и левая часть меню были разнесены при помощи флекс-бокса