Ogni elemento che abbia position diverso da auto stabilisce un contesto di stacking (impilamento) separato.
Questo vuole dire che lo z-index ha senso SOLO tra elementi che sono figli dello stesso padre, altrimenti non vedrai nessun effetto.
Detto in altri termini:
<body>
<div id=a style=z-index:3></div>
<div id=b style=z-index:4></div>
<div id=c style=z-index:1></div>
</body>
avrà degli effetti visibili, mentre
<body>
<div>
<div id=a style=z-index:3></div>
</div>
<div>
<div id=b style=z-index:4></div>
</div>
<div>
<div id=c style=z-index:1></div>
</div>
</body>
non avrà nessun effetto perchè gli ementi a cui hai dato z-index non sono nello stesso contesto, ovvero non hanno lo stesso padre.
Quindi, verifica di stare dando z-index ad elementi che abbiano lo stesso padre e vedrai che a quel punto modificare lo z-index avrà effetto, e sperimentando un poco potrai trovare l'ordine di visualizzazione che più ti è congeniale.