It depends on the _browser_, not the server. Initially it was designed
to be read and processed by servers, but this never happened (except in
rare cases); instead, browsers started reading and applying it.
But by XHTML rules, the meta element must be overridden, if it
conflicts with the XML declaration ("prolog"). It's confusing:
http://www.w3.org/TR/html/#C_9
The logical interpretation is that if there is no XML declaration,
then the XML default encoding="utf-8" applies, no matter what any meta
tags might try to say. On the other hand, this is an area where we can
see confused browsers too. If I serve an XHTML 1.0 document to Opera,
for example, as text/html, it ignores the XML declaration. Apparently
it thinks that serving XHTML as text/html is not kosher and mishandles
it as "tag soup".
The practical conclusion is that especially when you play with multiple
encodings, you shouldn't play the XHTML game at the same time.
Specifying the encoding in a <meta> tag works tolerably well _as long
as_ it does not conflict with information sent otherwise, in HTTP
headers or in XML declaration.
No, the charset attribute is just informative, intended to help the
browser decide what to do (e.g., to inform the user that the link he
wants to follow is _probably_ in an encoding that the browser has some
difficulties with). If the document is available, under the same URL,
in different encodings via content negotiation mechanism, then this
takes place between the browser and the server - I don't see how a
charset attribute in HTML could help here.
No, that's not the idea. What the browser prefers depends on the
browser, not the link markup.