These are usually presented as small, medium and large. They are not: they differ in what you control and what you share, and a busy site can be perfectly happy on the smallest while a quiet one genuinely needs the largest.
Shared hosting
- You control your files, your databases, your PHP version.
- You share the machine, the kernel, and the effect of every neighbour.
- Right when the site is a normal site and you do not want to administer anything.
- Wrong when you need a service that is not PHP, a specific extension, or a background worker.
A VPS
- You control the whole operating system - and are responsible for it: updates, firewall, backups, mail.
- You share the physical machine, unless the plan says dedicated cores.
- Right when you need software of your own, or isolation from neighbours.
- Wrong when nobody on the team will patch it. An unpatched VPS is less safe than shared hosting, not more.
A VPS is not "shared hosting but faster". It is an unmanaged machine. If nobody is going to log in and update it, choose managed - the risk is real and it is yours.
Dedicated
- You control everything, including the hardware profile.
- You share nothing. No steal time, no noisy neighbour.
- Right when performance must be predictable to the millisecond, or a rule requires single tenancy.
How to choose without guessing
uptime # load against your cores\nfree -h # available, not free\ndf -h # disk\niostat -x 2 3 # is the disk the queue?
If none of those is near a limit, a bigger plan changes nothing. The most common upgrade is bought to fix a slow query, and it does not.
Managed sits across all three: someone else patches, monitors and answers at 3am. That is usually what people mean when they say they need "a better server".