Ну смотри, есть у тебя абсолютно чистая страница, тебе надо создать блок, например, header. Создаём первый div с классом header.
Внутри него обязательно должен быть какой-нибудь контейнер, ограничивающий ширину, например div с классом wrapper.
Ширину ограничили, казалось бы можно начинать заполнять контентом, но нет. Допустим, мы захотим использовать display: flex внутри header'a, какому блоку задать это свойство? Задать его wrapper'у нельзя, ведь он используется и в других блоках, а там флексы могут быть не к месту. Приходится создавать ещё div с классом header-inner и прописывать ему display-flex.
Вот и получили уже три блока, а ещё даже контентом не начали наполнять