Why http Host header is required to be sent can be understood by how Google Sites works.
Google sites allows us to create and then host static websites for free. But by default the site is hosted at sites.google.com. But Google Sites allows users to give the hosted site their own custom domain name and that too for free i.e I can enter www.mywebsite.com and the site created & hosted by google sites will open.
So do you think for every custom domain name, Google is going to provide an IPv4 address and host your site there for free?
No it doesn't work like that and this is where Host header comes into play.
When we set custom domain in Google Sites settings, it gives us an IPv4 address and we have to register this address with a DNS service provider against our purchased domain name.
So when user enters domain name in the browser, its IP address is resolved to that shared by the Google.
Browser sends http request to that IP address along with the host header as 'mywebsite.com'.
At the server/gateway, appropriate website is returned depending on the host header.
So one IP address is able to host multiple websites.
----------------------------------------------
The above correctly explains how Host name is useful except that this is not how google sites actually work. One IP address can't host a million websites. How it works is a different answer.