Как видно из примера :first-child работает только в случае, когда указанный элемент (тобишь element:first-child) первый в родительском блоке (примеры 1 и 2).
Использование соседних(div+div) и родственных(div~div) селекторов позволяет это обойти