Ответ кроется в деталях. У каждого col есть padding по 15px с каждой стороны. У row же есть marginы по -15px с каждой стороны.
В итоге эта конструкция призвана
- Группировать colы
- Убирать лишние отступы
На примере Вашей конструкции:
<div class="header">
<div class="top-line">
<div class="container"> <!-- Дает padding 15px слева/справа -->
<div class="row"> <!-- Убирает отступы предыдущего класса -->
<div class="col-md-12"> <!-- Дает padding 15px слева/справа -->
<p>Какой-то контент</p>
</div>
</div>
</div>
</div>
</div>
Без row в Вашей конструкции padding был бы по 30px с каждой стороны.
Но если у Вас в col-md-12 будут еще, например
<div class="col-md-6"></div>
<div class="col-md-6"></div>
то лучше их обернуть в row, чтобы убрать лишний отступ, который нам дает col-md-12.
Поэтому "Что пень пнем, что Пнемпень" - может быть как .row>.col-*, так и .col-*>.row (но скорее всего будет .row>.col-*>.row>.col-*)