Web hosts are companies that provide space on their servers as well as the appropriate internet connectivity, a variety of hosting features and often technical support.
Web hosting services are typically the preferred way of serving your websites because their servers are optimized just for this task, have a very high upload rate and are usually located in data centers with trained staff monitoring the equipment 24/7.
Nowadays there's really no reason to have your homemade server with web hosting prices being lower than ever. What is important is to know which type of hosting fits your needs and how to avoid potential downfalls.
Free web hosting services can be a great way for experimenting with your first web pages if you're new to web design.
However, most of the time these types of hosting are very limited (no PHP, MySQL, domain name, statistics, ...), slow and contain annoying advertisement pop-ups.
They can be ok for small personal sites but are definitely a no-go for any website or even business that intends to cater to regular users.
These are the entry point web hosting solutions and provide most of the things needed for running dynamic and database driven websites.
Shared hosting is very affordable, usually only costing a couple of $ per month, because rather than having your own box you're sharing the web server (and the costs of the entire box) with many other customers.
Most of your account and website configuration is typically done through a control panel such as cPanel or Plesk. Access is limited to your account, however. You do not have administrative access to the server as a whole and thus have to ask technical support if you need something installed.
With that many websites from different people hosted on a single server security and speed can sometimes become an issue. A website that's eating up a lot of server resources can slow down other websites.
Shared hosting is the most popular type of web hosting and as such you'll find lots different hosting plans. The general rule of thumb is that when two hosting offers appear to be identical except for the price the cheaper offer is probably saving on support or hardware, while the normal priced one most likely provides an overall better service.
That doesn't necessarily mean that the cheaper one is worse. It depends on your individual needs. If you only need very limited support then by all means take such an offer and save a few bucks.
You'll often see hosting companies offer reduced monthly prices if you sign up with them for a whole year or two straight. Don't do this! What happens if you're not satisfied with their services? You've already paid up front for two years and won't get your money back! Always inform yourself prior to signing up.
However, sometimes companies do offer trial accounts or money back guarantees. Make use of them! Even if they don't offer it explicitly it never hurts to ask them for a testing account before handing over your hard-earned money.
Unfortunately, there are some web hosting companies that couldn't care less about service quality and try to maximize their profit by overselling their servers. Overselling means that a company offers "too good to be true" hosting plans to attract lots of people and then stuff their servers with hundreds of customers, expecting that none of them uses the advertised services at full extent.
Do not plan to sign up for an overselling offer with the intend to use the advertised resources to their fullest! It's not unheard of for hosting companies to tell a customer to leave or upgrade to a more expensive plan should he tax the server's resources too much.
Above screenshot is a classic example of overselling. This unnamed hosting company (*cough cough*) offers 1.566 TB bandwidth for $7.95! Serious hosting plans with 1.5 TB bandwidth usually cost around $150 per month if not more.
This image, on the other hand, is a good real world example of a realistic hosting offer. You'll immediately recognize the big difference between the two screenshots. You can use this one to orientate yourself when choosing a new web host.