If you want a public website, you need a domain - as the website is adressed by it’s IP, the “domain” is saved on a DNS, which transfers people who enter the name of the site to the corresponding IP.
Ofcourse IPs are usually not permanent, so you need a server to host the code so it’s both accessible AND can get a permanent IP. That’s the hosting-server.
So what do you need to do? Well for a start, figure out what website you have and then what it is supposed to do and what code is needed.
If you got a blog and some basic elements, some free options like Wordpress can work out.
If you got more specialised code or need specific environments… well it can get complicated but really comes down to doing some research on hosting-platforms for your needs. Some offer tons of E-Mail-Adresses, others have Chronjobs (executes code at specified times without further input from you). Maybe you need some servers or support for special code bases like Vue.js or Python.