Псевдоэлементы мало чем отличаются от обычных элементов, кроме того, что не существуют в DOM.
Они добавляются соответственно до или после основного содержимого блока.
Специально пример без стилей (только рамочки для видимости) пустого и не пустого блоков
https://jsfiddle.net/y8jpbgax/
т.е. это тоже самое, как если бы вы в начале и в конце div'а написали бы 2 span'а.
А как визуально накладываются псевдоэлменты?
А дальше как зададите, так и наложатся. Опять же визуально без разницы, span'ы (или div'ы) это были или псевдоэлементы.