Olá Eduardo, tudo bem?
Na verdade, o uso de parênteses ou não ao chamar um método depende da implementação desse método na classe.
No exemplo que você citou, é possível que o método "titular" não seja um método, mas sim um atributo da classe "Conta", do tipo string. Por isso, ao tentar chamá-lo com parênteses, o Python retorna o erro indicando que uma string não é um objeto exigível (ou seja, não pode ser chamado como uma função).
Já os outros métodos que você mencionou, como "extrato" e "limite", provavelmente foram implementados como métodos da classe, ou seja, funções que realizam uma ação específica quando chamados a partir de um objeto dessa classe.
Espero que isso ajude! Se tiver outras dúvidas, fique à vontade para perguntar.