External names for some foreign toponyms are called exonyms (see here). The reason the exonyms can be different from the endonyms (i.e. the indigenous toponyms) is to be sought for in the history. Linguistically, it depends on how long the name of a certain city was known to the speakers of a certain language. Some cities — like Milan — were founded in the antiquity and have been known by everyone for centuries since then. The ancestors of the contemporary Germans borrowed the name of this city already in the 1st millennium A.D. and it kept evolving together with the general evolution of the German language for a very long period. Time provokes phonetic changes. Latin Mediolanum became Mailand thanks to a folk etymology: the ending -lan (a Celtic word for 'valley') has been transformed in land, which means 'land' in German and was possibly perceived as more appropriate for a city name.
It is interesting to analyse the form a city name had at moment of the borrowing. Sometimes a borrowing depends on some intermediate language. For example, the name of The Hague (Den Haag, in Dutch) sounds very different in Italian: L'Aia. This is because it was borrowed in the Middle Age from Dutch to French and from French to Italian. Note that the French variant must reflect some dialectal variant of the Dutch name, where the final -g weakens into a glide, rather to the nowadays standard fricative.
English has special names for the most important Italian cities, in terms of the medieval commercial routes. Thus, there are special exonyms for Rome, Milan, Genoa, Venice, which were all obviously important cities, but also for Livorno which used to be called Leghorn: it is a small town today but was of great importance in the past. Other small towns of the medieval Italy don't have special exonyms in English because, historically, they were not important enough in the past, while today they are simply borrowed in the official Italian spelling.
Leghorn is the result of a folk etymology. In other cases, English exonyms reflect the Latin form of some Italian toponyms (e.g. Apulia instead of Puglia; see the list here).