Почему не срабатывает:last-child?
Так происходит потому, что :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, которые строго 
     * следуют друг за другом, этот селектор применится
     * к элементам со второго по пятый. Первый будет проигнорирован.
     */
}
Посмотри, так хочешь?
jsfiddle.net/7sruaj91