Actually you can get all your want by simply Google it but for your convenience:
1) free options: you can choose wordpress.com, blogspot, github, etc to host your website, but the drawback is you have to use their sub-domain system which is ugly, like yourwebsite.wordpress.com, another con is the backend of website lack many customization features, all in all, you host your content on other's house, what more can u ask!
Sure you can buy a domain and attach your domain to those services, its up to you.
2) A much cheaper and regular way to host a website is choose a hosting company like Namecheap, Godaddy (not recommend though), you can lower your cost to less than $20 first year, with a domain + shared hosting.
3) you can still choose static site generator like Hugo, Jekeyll, netilify, etc, but the concept is same, you either host your content for free on their domains, or buy yourself a lovely domain to start with.