That depends on what you’re trying to do. In this case I assume the ^ is part of the data (i.e., you’re not using it to mean the beginning of the line), so yes you have to escape them in the first set of braces. You can’t escpate them in the second set of bracers (the replacement).
Code:
set msg “test test test^US^foo bar”
regsub -all — {^US} $msg {^USA} outbuf
puts $outbuf