If your looking for a free
server, I would personally recommend x10Hosting. (free)
As for shared
servers, I would recommend bluehost. ($6/month)
Of course, everyone has there opinion on what company is the best.
There is a big difference between free and shared servers. Essentially, bluehost is more reliable and arguably loads faster, though there is great belief that they throttle bandwidth. Nonetheless I also have a hard time trusting free servers with privacy issues. If you have the money, definitely go for bluehost!
There is absolutely no reason for dedicated
servers or pricey $300/month plans! at least for startups
Here's how it works, they give you an FTP username and password, and you need to enter it (along with the URL) into your FTP program. There, you will usually find a folder called public_html. Anything you place in there will be displayed on the website URL! So, index.html in public_html would be www.website.com/index.html
A good FTP program: filezilla