если у вас нет на это никаких религиозных запретов, то абсолютно нормально)
как вариант - можно установить этой секции min-height и избежать того момента, когда контент в ней не вмещается)
варианты:
1. назначить каждому элементу свой класс и прописать свою иконку :before
2. использовать псевдоклассы nth-child(1-...)
3. вставить иконку не через :before, а в html каждому элементу
потому что контент внутри header больше чем он сам и так как flex-wrap по умолчанию nowrap, то блоки не переносятся.
плохая идея делать всё на vw и vh, конструкция очень ненадёжная получится, используй лучше проценты и пиксели