Currently I have a production and test environment for each website. Each has a structurally identical database and, for the most part, identical code. Only a config file is different and this holds things like the database credentials along with flags to switch off things like notification emails in the test site. Some also have a dev environment which shares the test database.
With the current shared hosting, I am unlikely to be able to do anything in the the test environment that will break the production environment without copying code into it. With a VPS my concern is that I will have access to, and will need to administer, the parts of the system that control both environments and therefore the likelihood of me breaking the production environment increases. So my thought was to have a separate VPS for each environment and use well thought out scripts to copy between them when the time comes.
Perhaps that is overkill...
Coding is not my full time profession. If there is a problem I need to sort it out as I don't have an IT team but I also have a business to run.