Como estamos nos ultimos dias, e não sei se o prof vai te responder a tempo, vou tentar te ajudar.
Então, uma pequena revisão: um metodo é uma "ação" de um objeto, esse metodo que calcula a distancia não está solto no main, ele está dentro da classe coleção de cidades, logo, a unica forma de usá-lo é através de um objeto cidade existente. Sabendo disso, fica mais facil entender o porque você só passa uma cidade, pois o parametro passado irá interagir com a cidade que está chamando o metodo == cidade1.calculadistanciacom(cidade2); no metodo você acessa os valores de cidade1 tranquilamente porque o metodo usado é de cidade1, e só acessa as informações de cidade2 para fazer a conta através de get(). Sacou? Ou eu piorei a duvida? lol