I recommend reading Baymard Institute articles since they provide a lot of research on this exact topic. But to answer your questions.
Why do we ask users for their telephone number?
If you don't need a telephone number, you shouldn't ask for one.
All the examples mentioned (Amazon, Ebay and Aliexpress) are selling physical goods. And most (if not all) shipping companies require you to submit a telephone number so they can reach you when the order is about to be delivered. None of the mentioned companies above use your number to send you promotional offers.
What is interesting though, is the fact that the telephone number is grouped with addresses, and not with general contact information fields. But I guess there is a use case where you are sending a package to someone else, thus making your contact information irrelevant.
Breaking the user's mental mapping of their location.
It is not an issue.
I was also wondering about this one for a while. Since it goes against the well established pattern of writing an address down. But again, Baymard Institute did a very interesting research.
But there are things you should implement when working with auto detection. Like fallback for instance.
Should guest check out include their email address?
Since we are talking about a checkout its safe to assume you are selling products on your website. It doesn't matter whether you are selling digital or physical products. Users are used to and expect a confirmation email saying "We got your order". It is also a good idea to include a receipt in such an email in case your customer needs one.
From business point of view you want to have your customers emails. You can then inform them about your product updates (if its digital) and new products (if they opted in somewhere during the checkout).
General tips for shipping/address form
This is how I design shipping forms.
Name should always be in one field. Its the most comfortable way for your customer to type his/hers name. It also deals with a case where your customer has one or more middle names.
Country should follow. If you are operating on only one market, you don't have to display this option. If you are available world wide though, this will determine whether to display State (which is not relevant, or the same as country for most of the countries). And also choose a dataset for your Zip code auto-fill. If most of you users are coming from one country though, you can preselect it.
Address. Most forms have two addresses, one for a street number and the second for apartment suite or company name. Again, it is not relevant for most users so hiding it like this results in less noise.
ZIP Code. As suggested by our developer, once your customer has chosen his/hers country, you can fill out the rest. Its also a good idea to format this field as well as prevent your customer from writing letters.
If you have country preselected, your customer has to write into as little as 3 input fields to fill out his/hers shipping info.
I generally have contact information input later during the checkout process.