Não há realmente nenhuma " string bruta "; existem literais de string brutos , que são exatamente os literais de string marcados com um 'r'antes da citação de abertura.
Um "literal de cadeia de caracteres brutos" é uma sintaxe ligeiramente diferente para um literal de cadeia de caracteres, na qual uma barra invertida \é entendida como significando "apenas uma barra invertida" (exceto quando ocorre logo antes de uma citação que de outra forma terminaria o literal) - não "seqüências de escape" para representar novas linhas, guias, backspaces, feeds de formulário e assim por diante. Em literais de sequência normal, cada barra invertida deve ser dobrada para evitar ser tomada como o início de uma sequência de escape.
Essa variante de sintaxe existe principalmente porque a sintaxe dos padrões de expressão regular é pesada com barras invertidas (mas nunca no final, portanto a cláusula "exceto" acima não importa) e fica um pouco melhor quando você evita dobrar cada uma delas - - Isso é tudo. Também ganhou popularidade ao expressar caminhos de arquivos nativos do Windows (com barras invertidas em vez de barras normais, como em outras plataformas), mas isso é muito raramente necessário (já que as barras normais também funcionam bem no Windows também) e imperfeito (devido à cláusula "exceto" acima).
r'...'é uma seqüência de byte (em Python 2. *), ur'...'é uma cadeia Unicode (novamente, em Python 2. *), e qualquer um dos outros três tipos de citar também produz exatamente os mesmos tipos de cordas (assim, por exemplo r'...', r'''...''', r"...", r"""..."""são todas cadeias de bytes e assim por diante).
Não sei ao certo o que você quer dizer com " voltar " - não há instruções intrinsecamente para trás e para frente, porque não há tipo de string bruto , é apenas uma sintaxe alternativa para expressar objetos de string perfeitamente normais, byte ou unicode, como podem ser.
E sim, no Python 2. *, u'...' é claro que sempre é diferente de apenas '...'- o primeiro é uma string unicode, o último é uma string de bytes. A codificação do literal pode ser expressa em uma questão completamente ortogonal.
Por exemplo, considere (Python 2.6):
>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34
Obviamente, o objeto Unicode ocupa mais espaço na memória (diferença muito pequena para uma string muito curta, obviamente ;-).