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.
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 "
" 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')