Нус, можно сделать 2 строки, где первая — флексы с заголовками, а вторая остальной контент. Тогда, правда, придется продублировать как минимум второй и третий для медиазапросов. В смысле, чтобы на мобилках было норм.
Или использовать гриды, просто разбить на блоки и давать порядок в зависимости от разрешения. Типа
grid-template-area: 'header_1 header_2 header_3' 'features_1 features_2 features_3'
на пекарне и
grid-template-area: 'header_1' 'features_1' 'header_2' 'features_2' 'header_3' 'features_3'
на мобилках. Зайти и с другой стороны, выдавая позицию в номерах. Грубо, но свойства есть, дальше поможет интернет. Но смотри поддержку браузерами, осел не вывозит
гриды.
Да и таблицами на самом деле сделать можно. Главное обеспечить им адаптивность. Это реально, но геморроя больше, чем в подходах выше.
Так-то еще можно менять положение DOM-элементов с помощью JS в зависимости от разрешения, но кроме меня я не слышал, чтобы кто-то в здравом уме так делал.