Well...the Best Practice is to have two Orgs.
There is no way to emulate multi-tenant within one Organization (which is essentially what you are trying to do).
The only thing you could do to get close would be to set up naming in such a way that it is obvious which entities go with which purpose (e.g., begin each name with DEV_ or UAT_). There is no way to set up permissions so that a specific user has rights to view specific locations/sites/queues/users/etc.
In Architect, we have teams that set up a main menu with a DTMF option in the initial flow that branches off to another flow specific to each team member. For example, Option 1 could branch to a DEV flow and option 2 could branch to a UAT flow. Or, as you are probably already doing, have one DID for DEV and another for UAT (split by the trunking provider to go to different edges, as in your other post).