"I have lived in Barcelona for 20 years" means that I still live there, I am living there at present.
"I have been to London" is correct, but I can understand your frustration.
It means that there is a continuing effect: Memories of London are part of my life, part of what I remember and think about right now. The experience of seeing London is part of my life. I learned things there, and some of my present knowledge was gained in London. I am who I am, in part because I've been to London.
"I went to London" would be a simple mechanical fact, an action without meaning.
You ask when you MUST use the present perfect.
The answer is: NEVER. There is never a time when you MUST use the present perfect. Sure, use it when you know how, when it seems right to you, but you are Brazilian and you speak Portuguese. You will never speak English like a native. No one expects you too. People are interested in what you say to them, not in how accurately you use verb tenses.
English should be a pleasure, a joyful experience, not a grim set of rules to make you miserable. Pronounce as well as you can, listen and imitate, and have fun.
I hope I have answered your questions! [Do you see the effect in the present?]
- For Teachers