Web hosting is the service that stores your website files and make them available on the internet. A domain name is the address of your website, you need both a domain name as well as a hosting plan in order for your website to be live on the internet.
A simple way to think of this is that web hosting is like a house or property.  At the house you can receive mail, store files, setup security and paint it any color you want.
A domain name is like the address for the house. You give this address to other people in order for them to find your house.
The two go hand-in-hand with each other and in order to have a website on the internet or email services, you will require both.