Hola:
Básicamente:
<div>
<p>
hola
</p>
<br/>
<p>
amigo
</p>
</div>
Con esta estructura, el primer párrafo es childNodes[1] (con respecto al div), porque el índice 0 es el salto de línea... el br es el childNodes[3], porque el 2 es un salto de línea entre el cierre del párrafo y el br..., etc.
... en cambio:
<div><p>hola</p><br/><p>amigo</p></div>
entre el tag div y el párrafo no ponemos un salto de línea, o sea que es chidNodes[0]; y el br por la misma razón es childNodes[1]...
En el primero de los casos hay nodos de texto que se corresponden solo con los saltos de línea... y en el segundo caso no los hay... Y no es parte de los chilNodes ni "hola", ni "amigo"...
Saludos