The size your server need to be depends on how many users you're expecting to use it at one time and the complexity of the software that you're running. Even very busy servers can serve simple, static content (i.e. content which doesn't vary depending on who is viewing it, like a company brochure) without using a lot of server resources though you'll still need plenty of bandwidth. But a site which generates each page on demand, varying what each user sees is going to need a database and a good deal of complexity and that will require more processing power. So to make hosting recommendations means knowing the nature of the site and its volume of use.
Very light - 20 active users
Light - 100 active users
Medium - 500 active users
Heavy - 2000 active users
Very heavy - 5000 active users
What happens when you don't know how many users you'll have? Or maybe you have some other metric but don't have an idea of how many active users by the above definition? It's a common problem. Generally the best approach is to choose a flexible solution which will allow you to quickly scale-up.
For static websites, all but the heaviest traffic sites can run comfortably on a Virtual Private Server (VPS). The thing to watch for though is bandwidth utilisation. When you exceed the light traffic levels you'll likely hit bandwidth limits imposed by your provider - 100 active users would require around 500Gb a month of data transfer. Most VPS charge for data transfer not bandwidth, so this might be a limiting factor in your use of VPS. So, up to medium traffic a VPS is a good solution, beyond that you'll probably need a dedicated server. However the server specification can be quite low, for example a server with 2 CPUs, 2Gb of memory - that should cost around £200 per month unmanaged, or around £500 fully managed. Don't forget to add additional costs for a reliable backup mechanism, say £100 per month.
Dynamic websites usually involve a variety of software components and their configuration usually (though not always) means using a server over which you have a good amount of control. This dictates a Virtual Private Server (VPS) or a dedicated server. Up to light levels a VPS is suitable, but beyond that will require a dedicated server. A medium traffic level site running for example a PHP and MySQL based forum, such as vBulletin, PHPbb, or similar, will run on a single dedicated server with say 4 CPU cores and 8Gb of memory. A more complex application which does lots of queries for each request and uses large or complex datasets will also run on a single server but require say 8 CPU cores and 16Gb of memory. A heavy use dynamic site will require two dedicated servers - the first for the web/application server with perhaps 8 cores and 16Gb of memory and a database server with 8 cores and 32Gb or more of memory. A higher spec database server with 16 cores and 64Gb of memory will likely support over 3,000 users. The same server might only support 1,000 concurrent users if it's a highly complex application, or one not written with efficiency in mind.
[Oracle DBA 10g]