I have been to London означает Я был в Лондоне (Я там бывал).
I have gone to London означает Я уехал в Лондон (Я сейчас там).
Давайте разберемся, почему так:
- Вспомогательный глагол - have. Он не переводится, то есть не привносит никакого смысла в предложение.
- Смысловые глаголы - been и gone. Это 3я форма глаголов to be и to go.
- Время - Present Perfect, смысл которого "действие в прошлом, результат сейчас". Мы называем действие, которое было совершено ранее, но имеем виду не само действие, а его результат, который есть прямо сейчас.
have been
- Глагол to be переводится как быть, являться, находиться. В данном случае - находиться.
- Еще раз взгляните на смысл времени Present Perfect: "действие В ПРОШЛОМ", а значит мое пребывание, нахождение в Лондоне - в прошлом. Оно уже закончилось, я уехал оттуда.
- От поездки остался результат - опыт. Я знаю, как выглядит этот город, какие там улочки, магазины, люди, сколько там стоит чашка кофе и т.д.
have gone
- Глагол to go переводится как ходить, ездить.
- Когда в русском языке мы говорим Я ездил в Лондон, мы имеем ввиду Я там бывал. Но языки не совпадают между собой на 100 процентов, и в английском языке так не получится. Во временах Perfect глагол to go будет означать уходить, уезжать.
- Действие в прошлом, то есть мой отъезд в Лондон - в прошлом, но результат отъезда есть сейчас. Если я уехал в Лондон, значит, я сейчас в Лондоне.
- Представьте себе ситуацию: подружка звонит Соне на домашний телефон, а ей отвечают: "Соня ушла в магазин". Где сейчас Соня? В магазине. А если Соня уехала в Лондон? Соня в Лондоне.