First of all, you shouldn’t use the term ‘charset’ at all, because it’s ambiguous.
There are two concepts of importance here: the character repertoire and the encoding. The term ‘charset’ has been used for both of these, which can lead to some confusion.
The character repertoire is the total set of available characters. For HTML this is defined to be ISO/IEC 10646, which to all intents and purposes is equivalent to Unicode. You cannot change this; it’s built into HTML.
So what you can vary is the encoding, which is how the characters in a given repertoire are represented numerically, i.e., in a form that computers can understand.
ISO 8859-1 is actually both a repertoire and an encoding. As a repertoire it’s a small subset of ISO/IEC 10646, so we can regard it as an encoding capable of representing a small part of Unicode. UTF-8 can represent any Unicode character.
In ISO 8859-1, each character is encoded using a single octet (an octet is an 8-bit number, i.e., an integer between 0 and 255, inclusive). In UTF-8 characters are encoded using a variable number of octets. The first 128 positions, equivalent to US-ASCII, are encoded as a single octet. Most additional characters used in European languages, Hebrew, Arabic and others use two octets. Eastern writing systems like Japanese and Chinese require three octets per character.
The important thing to understand is that the encoding you declare for your web page must match the encoding under which you saved your files! Browsers don’t automatically convert anything; they trust what you tell them.
In the case of Spanish you can choose either ISO 8859-1 or UTF-8. Both will let you use a literal ‘í’ (and the other letters with diacritical marks used in Spanish, plus the ‘¿’ and ‘¡’ punctuation characters).
If you choose UTF-8, make sure you save the files without a BOM (byte order mark). A BOM is completely unnecessary in UTF-8, and will cause problems with some browsers.
Then be careful, because the encoding used for the original text may then come into play as well. Your editor may convert the pasted text automatically, or it may not.
As I said, the declared encoding must match the encoding used in the file. If you save as UTF-8 and declare as ISO 8859-1 – or vice versa – you’ll run into problems with all characters outside the US-ASCII range.
Yes and no.
<meta> element is good to have there, but it will be ignored if your web server sends encoding information in the real
Content-Type HTTP header. (Many web servers do, by default.)
If you cannot affect the server-side setting, then you have to choose the encoding declared by your server. Unless you use a server-side scripting language like PHP, which lets you override the headers.