While I agree that this is fairly subjective, and it may be justified to close it, there are a few things that can be said about the hierarchy.
You need to understand HTML to do CSS.
CSS (or at least its most common application) requires you to have at least a fundamental understanding of HTML and browser layout systems.
You need to understand HTML to make (client side) JavaScript useful.
While people keep building up abstraction layers removing this requirement (e.g. Objective J & Cappuccino), you should still have an understanding of the DOM tree and the meanings of all the tags you're creating, whether you're creating them directly or indirectly.
You need to understand HTML to make serverside applications (PHP, RoR, etc.) useful to humans.
I say to humans because I suppose you can make a server side application such as an API that does not use HTML.
In the context of web development, you need to know some server side language to make databases useful.
You can't communicate directly between the client and a database yet, so you therefore need some way of interacting with the database on the serverside. I suppose this is coming with local storage in HTML5.
XML & JSON are transports - they are useless without knowledge of server side languages on at least one end of the transport.
That said, if you're simply interested in USING API's, you can probably get away with only knowing either serverside or clientside, as most APIs nowadays have JSONP support.
So more or less, if you want to get into web dev:
Start with HTML, then take your pick between CSS, JavaScript or server side language.
From there, learn another one of those three, rinse, repeat.