XML[
^] (Extensible Markup Language) is a protocol (a set of rules agreed upon by international regulatory bodies) for storing information in textual format (i.e., somewhat human readable form).
It supports, via Unicode, all the world's character sets from alphabetic-phonetic through idiogramatic.
XML, by design, can represent hierarchy (things inside things), Attributes of Objects, etc.
When, where, and how, a client-server scenario uses XML can vary widely; similarly, when-where-how any application uses XML can vary widely.
For every usage scenario you mentioned, the answer is "yes, maybe, and 'even more'." You could have, for example, a scenario in which one machine sends out XML (and contains only an internal encoder from its own format to XML), and a receiving machine can only read XML (contains only a translator from XML to its own format) ... but that is very unlikely.
In .NET C#[
^] you have XML read and write functionality built-in that you can adapt for almost any purpose you can imagine.
There are great resources here on CodeProject to help you with XML[
^]