Так происходит потому, что
:last-child
— это последний элемент родительского контейнера. Совсем последний. После него не должно быть никаких элементов. Не получится использовать и
:last-of-type
, так как last-of-type подразумевает последний элемент по имени, а не по классу (и если после последнего div.blog-item будет хотя бы один div на этом же уровне иерархии, этот div.blog-item перестанет быть last-of-type).
Вообще, я разделители меду элементами делал бы так:
.blog-item + .blog-item {
/* В ситуации с 5-ю элементами с классом .blog-item, которые строго
* следуют друг за другом, этот селектор применится
* к элементам со второго по пятый. Первый будет проигнорирован.
*/
}