Buenas preguntas, da gusto que pones atención a esa parte teórica.
Tu primer afirmación es correcta, pero habrá que verlo implementado en los navegadores. Hice tu ejemplo.
Cita: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head><title>Untitled</title>
<style>
div p {color: red;}
div>p {background-color: black;}
</style>
</head>
<body>
<div>
<p>Hola<p>Adios</p></p>
</div>
</body>
</html>
En Ie no se vé el fondo negro, y en Mozilla no se respeta que solo sea el hijo.
Como verás no está bien implementada esta sintáxis.
Ahora ve esta:
Cita: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<style>
div p {color: red;}
div > P:first-child {background-color: black;}
</style>
</head>
<body>
<div>
<p>Hola<p>Adios</p></p>
</div>
</body>
</html>
first-child si está implementada en mozilla
Va a ser mejor que uses classes e Id, en vez de pseudoelementos. Los únicos quizá son los hover de las <a>