Minimalbeispiel!!

mus =
<<
\context ChordNames \chordmode { c1 g }
\context Voice \repeat unfold 2 r1
>>
#(begin) %% Füllsel, dem minimal-example geschuldet
\mus
\new Staff \mus
Im ersten Fall initiierst Du simultaneous-music, mittels <<>>.
Dann wird ein neuer Context kreiert, ChordNames.
Dann ein weiterer neuer Context, Voice, der allerdings nicht für sich alleine stehen kann, sondern defacto in einen Staff gepact wird. Also eigentlich: \new Staff \new Voice ...
LilyPond ordnet neue Contexte in immer unten an. Deshalb erscheinen die Akkorde oben, die Note unten.
Im zweiten Fall ist von vornherein ein Staff-context geschaffen worden. Der ChordNames-context wird danach neu initiiert, erscheint also unten,
Der Voice-context wirkt im bereits vorhandenen Staff, also erscheinen die Noten oben, die Akkorde unten.
Du willst vielleicht:
<<
\new ChordNames ...
\new Staff ...
\new Lyrics ...
>>Erschaffe keine Contexte
innerhalb von anderen Contexten. Es sei denn es ist wirklich angebracht.
Ansonsten gibt es auch
alignAboveContext und alignBelowContext, such mal in der NR danach.
Gruß,
Harm