whats confusing the life out of me is that , see for the footer code how it has the keyword top in it and the header have bottom in it. how is bottom showing on top? read again if ur confused to what im saying :)
I have no idea what the 0 and 100% do never seen it before, however the background:#333 url(footer.gif) top no-repeat; just means what it says add the background image dont repeat it and position it at the top of that div. then apply the dark grey every where the image is not at.
The reason the footer has top and the header has bottom is so that the layout stays together. You want the header right against the content so you place it on the bottom and you want the footer against the content so you place it at the top.