1) Depends what you mean by "special characters". Escape sequences just let you express any value as a literal string.

2) Yes, very different things.

The quote (") character is used by the compiler to differentiate between code and literal string data.

Example:

12

cout << "(5+2)"; // prints (5+2)
cout << (5+2); // prints 7

Since the quote marks both the beginning and end of the string literal data, this means it would be impossible to represent the quote character inside the string normally. Example:

cout << "Bob said "hi" to Jeff";

As the syntax highlighting here shows, the compiler will see this as 2 different strings ("Bob said " and " to Jeff ). The 'hi' in the middle is treated as code and not part of the string... which will likely cause a compiler error.

To solve this problem, quotes can be expressed as an escape sequence:

cout << "Bob said \"hi\" to Jeff";

Since the inner quotes are escaped, this means they are interpreted as part of the string, rather than the begin/end markers for string data.

3) My answer to #2 illustrates one use of the escape character. Another is to express other characters which cannot be easily represented/typed.

For example \t is a tab
\n is a new line
\r is a carriage return
\\ is the \ character
\x64 is the character code represented by hex value 0x64 (lowercase 'd')
etc