emin313: я добавил в ответ ссылку на ваш вариант вложенности меню. Мы применяем :first-child не к внутреннему элементу, вложенному в элемент списка, а к самому элементу списка, иначе правило применится ко всем элементам, т.к. все вложенные ссылки в элемент списка идут как первый дочерний элемент first-child. Это как раз то о чём я выше упомянул.
emin313: и тот и другой вариант решает вашу задачу, просто мой не создаёт псевдоэлемент. Вариант с :before и :after удобен, если вам нужно еще и позиционирование разделителей настроить или как-то так стилизовать, как обычным border'ом не получится.
emin313: тоже решаемо. Но текст должен быть обрамлён в тег, чтобы к нему не применялся отступ родителя. Всё полностью зависит от структуры вашей вёрстки, в данном случае удобнее будет как раз сделать через before-after, т.к. тогда не придется вносить правки в HTML-разметку. Если будет ситуация, когда не нужно будет работать с отступами и декорировать текст подобным образом, там можно вполне обойтись и обычным бордером. Всё от специфики задачи всегда зависит :)