CSS 3, si no mal recuerdo. Afecta solo al primero de sus hijos en una etiqueta, ejemplo:
Código HTML:
<div id="parrafos">
<p>parrafo 1</p>
<p>parrafo 2</p>
<p>parrafo 3</p>
</div>
un
#parrafos p:first-child solo afectaría al primero de todos los parrafos. Es es bueno si en algún punto el primer parrafo fuera cambiado, desplazado o similar.
De igual forma, hay un "last-child" si no mal recuerdo