This is a complicated area, so I’ll take it step by step. There is 3 main steps :
Purchase Domain -> DNS delegation -> web hosting -> email
You should purchase a domain from somewhere reputable, and make sure you own the domain yourself. Some less reputable suppliers will buy the domain, allow your web hosting, but they retain ownership.
I recommend crazydomains. They have reasonable prices, and do a good job of domain selling, and DNS delegation. When you buy your domain SKIP all the addon’s they offer. They are not needed, and some are a bit of a scam.
DNS delegation is used to point your domain to who you want to do the DNS hosting, you have a few choices:
This is the supplier that will host your website. There are a LOT of choices, here is my write up about choosing WordPress web hosting for small business.
Basically you can choose
With every domain you get email, like email@example.com. Again, a few choices
If you aren’t ready to use your domain, domain parking is an option to avoid web hosting fees whilst you build your website.
Ask your web hosting company how to organise domain parking.