Ei! Tudo bem, Matheus?
Em Python, os parênteses () servem para invocar (ou seja, executar) um método.
Métodos sem parâmetros: No caso do .strip() e do .upper(), eles não precisam de nenhuma informação extra para funcionar. O .strip() já sabe que deve remover espaços e o .upper() já sabe que deve transformar tudo em maiúsculo. Deixamos os parênteses vazios apenas para dizer ao Python: "Ei, execute essa ação agora!".
Métodos com parâmetros: Já o .replace('y', 't') exige que você diga o que quer trocar e pelo que quer trocar. Por isso, os parênteses dele são preenchidos com os argumentos necessários.
Por que digitar "texto" na linha de baixo?
No Python (em ambientes como o Jupyter Notebook ou Google Colab), quando você faz texto = texto.strip().upper(), você está realizando uma atribuição. Ou seja, você está guardando o resultado das transformações dentro da "caixa" chamada texto.
Se você apenas rodar a linha da atribuição, o Python faz o trabalho silenciosamente e não mostra nada na tela. Ao digitar texto sozinho na linha de baixo, você está pedindo para o ambiente exibir o conteúdo atualizado dessa variável, para que você possa conferir se a limpeza dos dados deu certo.
Material Complementar
Esse conteúdo pode estar em inglês, para traduzi-lo utilize o tradutor automático do navegador ou clique com o botão direito do mouse sobre a página e selecione a opção Traduzir para o português.
Espero ter ajudado e conte com o nosso apoio aqui no fórum se surgir outras dúvidas.
Bons estudos e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado