Hallo!
h1:not(:first-child) { margin-top: 2em }
verstehen wohl alle modernen Browser.
h1 { margin-top: 2em }
h1:first-child { margin-top: 0 }
>
Oder:
`h1 ~ h1 { margin-top: 2em }`{:.language-css}
Geht auch in Browsern, die noch kein :not können (IE 7, 8) und ist ein bisschen kürzer als die Variante mit dem :first-child.
Generell finde ich aber die Lösung mit den sections am besten, weil die das IMHO sinnvollste Markup für diesen Fall sind.
Viele Grüße,
Alex