<div>: универсальный контейнер без семантического значения, используется для группировки элементов для стилизации, не влияет на структуру документа, не создает outline (план) страницы
<section>: семантический тег для тематических разделов, должен иметь заголовок (h1-h6), создает структуру документа, влияет на outline и доступность
Когда использовать <section>: группировка связанного контента, разделы статьи или страницы, контент, который можно выделить в отдельную секцию
Когда использовать <div>: контейнер для CSS стилизации, группировка без семантического значения, layout элементы (обертки, сетки)