Hmm not such a simple question actually:)
Perhaps its better to just define how positioning works and then it may make it clearer to you.
When you absolutely position something it is placed in relation to the nearest ancestor that has a position defined other than static. If no ancestor has a position defined (either relative or absolute) then your element is placed in relation to the body (effectively the viewport).
In simple terms if you absolutely position an element and its parent is either position:relative or position:absolute then that child elements takes its starting position as the top left of that parent element. If the parent element is them moved then so does the child. If on the other hand the element's parent (and any other ancestors have no position defined then the child element is placed in relation to the viewport and should the parent be moved the child will not care a jot and stay where it was
Z-index defines the stacking strategy for positioned elements. It does not apply to elements that are static (position:static - the default). Therefore if you want to apply a z-index to a static element it must first be set to position:relative and then the z-index will apply.
A higher z-index means the element will be closer to the viewer so we say this element is on top and vice versa a lower z-index means the element is further away from the user and will be under elements with a higher z-index. However this is not the whole story because once a positioned parent element has a z-index defined (other than auto) then it becomes atomic and its children can never escape from this context. If the parent is z-index: 1 then all its children will not sit on elements outside this context that have a greater z-index than the parent. These child elements may have high-z-indexes but they will only apply in relation to other children of this main parent. It will have no effect outside of the parent's stacking context. This means that an element with a z-index of 10000 will not sit on top of en element that has a z-index of 2 if that other element is outside the current stacking context.
Another thing to consider is that if the parent is position:relative but has no z-index applied then it is automatically assigned a z-index of auto. This effectively means it ha no stacking level and in this case a child element with a z-index applied will interact with other elements outside this stacking context in the normal way. To muddy the waters a bit more here you should know that ie7 and under don't understand z-index:auto and always apply a z-index of :zero (0) to all positioned elements by default. This makes a positioned element in ie7 and under always atomic and its children always tied to the z-index of the parent.
Lastly negative z-indexes are allowed but a child element can never be behind the positioned and z-indexed parent's background no matter what the z-index is (older browsers used to get this wrong also but are correct these days).
Hope that explains it