^ is pretty simple, it's the general escape character(like a backslash is in most languages). The purpose of course is so that characters(mainly "<>)^&|!") with special meaning can be used literally.
Of course batch being batch there is a catch.
If the characters are double quoted then they already are escaped so the carets will remain in the output, so you can't just blindly escape....
%' are a special case though, they must always be double inside a script, on the command line they must be escaped, if double quotes are involved the comes a catch:
rem only at the command prompt
Ahh the joys....
I should have thought of: