Boa noite Douglas,
Quando você utiliza o método "replace" ele não altera a variável "outra", porque ele continua apontando para a String anterior, porém você consegue imprimir o "replace", onde o "Sysout" vai imprimir o resultado do retorno do método replace.
Em outras palavras, temos o método replace que te retorna uma String (uma nova String), você pode imprimir essa nova string retornada (com Sysout) ou guardar na variável "outra".
A variável outra é do tipo String, aponta para um Objeto String retornado pelo método replace ao fazer
nome.replace("A","a");
Se outra é do tipo String, ele tem o método replace com ele, e porisso é possivel chamar dele mesmo
outra.replace("a","A")
e novamente temos mais um retorno do tipo String (com o replace realizado) , e o que voce fez foi
Guardar na variavel outra:
outra =outra.replace("a","A");
ou pode imprimir sem guardar em nenhuma variável:
System.out.println(outra.replace("a","A"));