Character Set

The character encoding defines the characters that will be used to display the content on browsers and validators If character encoding is not defined, the browsers will try to determine the character set from your server's HTTP response headers (specifically, the Content-Type header).
Most browsers, be default, rely on the content header to determine the encoding of the web page. Therefore, it is not really necessary to define the character set within the HTML document. However, for some reason, if the headers cannot be configured, then setting the encoding on the web page is also an option, however, this may or may not be used by the browser.
If a character set is not declared at all then the browsers will set it automatically, however, this may or may not be desired one. Therefore, the web page could potentially have some rendering issues.

Special characters

For most the times, UTF-8 would be sufficient, however, for certain characters, specially, the ones from Japanese and Chinese language, UTF-16 is preferred as it will cover more characters. HTML also defines a number of entities (with name and number) that is used to display reserved characters. For example, both ® and ® can be used to display registered trademark.

Changes in defining character set

In HTML5 and older versions, character set can be defined in the document by using meta tags. However, HTML5 has introduced a shortened format for defining the character set.

    <!--HTML4-->
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <!--HTML5-->
    <meta charset="UTF-8" />