:nth-child(an+b) — считает все дочерние узлы-элементы родителя; тип тега не важен для позиции.
:nth-of-type(an+b) — считает только элементы того же тега.
<div><h2>A</h2><p>1</p><p>2</p></div>
p:nth-child(2) матчит первый p (он 2-й ребёнок). p:nth-of-type(2) матчит второй p.
Есть :nth-child(2 of p) (современный синтаксис «of S») — гибрид фильтрации. Путаница с текстом/комментариями обычно не мешает: считаются element nodes.
Чем `:nth-child` отличается от `:nth-of-type`? · Sobeso