(1) You don't have to host your website on a web hosting provider. However, it will be much easier to do so; since web hosts like GoDaddy, Amazon etc. offer good server-side products, security and maintenance. The cost of using that kind of web hosting is not that expensive especially if you don't expect high traffic on your website. GoDaddy's basic web hosting price is around 60$ per year. It would be a better deal if you buy a domain name with the web hosting.
(2) You don't have to buy a domain name. You can access the website via IP address. Nevertheless, if you don't care about the domain name, the cheapest domains are around $2-$3 per year which I think, is better than making users memorise the IP address.
You can host your website on your own server no matter if you have a domain name or not. However, it isn't easy to build your own server.
As another solution, if your main aim is to build a website without much traffic, and if you don't need a database; I would recommend you to buy a domain name for a cheap price and then host it on Google Drive. Once you buy the domain name you can forward the domain to a folder on your Google Drive account. If you don't have a Google Drive account you can get one for free with 17GB storage which I think, will be enough to meet your website's needs. You can forward the domain on the domain name provider's website. This is what I do for some of my websites. Here is how to do it:
1. Go to drive.google.com.
2. Select a file.
3. At the top, click the Share button.
4. At the bottom right of the sharing box, click Advanced.
5. Click Change....
6. Click On - Public on the web > Save.
7. Before closing the sharing box, copy the document ID from the URL in the field below "Link to share." The document ID is made up of uppercase letters, lowercase letters, and numbers between slashes in the URL.
8. Share the URL that looks like "www.googledrive.com/host/[doc id] where [doc id] is replaced by the document ID you copied. Anyone can now view your webpage.
I hope this was helpful.