I would say that practice to adopt depends on the type of production.
In 2.79, game engine was using scenes as states.
In Video Sequence Editor, you can load Scene strips as sequences of a movie.
In 2.79, amount of layers was limited to 20. So, some people wanting to use more layers had to use multiple scenes.
In theory, in 2.8, you can use as many collections as you want. But in practice, making nested collections is complicating collections management.
So, making several scenes instead of nesting collections may be a good practice.
It is still possible to use a scene as a background scene of another one.
It is not a bad idea to build an environment by using several background scenes as parts of it.
For compositing, you can use different view layers to manage different lighting for different collections of objects. But render engine properties are common to the whole scene.
So, in that case, using scenes may be helpful to composite view layers from different render engine set-ups.
To keep things manageable and avoid to loose too much data if .blend file is corrupted ; it is a good practice to try to keep each scene in a separate .blend file and link them in final one.
So generally, final .blend file contains multiple scenes. Sometimes, in this file, some scenes are just copied to apply a different rendering set-up.
Many people are used to open several instances of Blender to manage final scene of final blend file and original blend file of a linked scene. But in 2.9, with improvements of overrides, that should become rarer.
Collections are used as groups.
You create an asset into one collection. That way, you can instance it through a collection instance or link it from another .blend file.
Collections are also used as layers.
You manage visibility/renderability of objects in a View Layer by enabling/disabling Collections.
So, during creative process, you can create temporary Collections or View Layers.
And when you order .blend file; then, you have to question their pertinence for View Layer rendering, Linking and/or Instancing.
In future releases, importance of their pertinence will increase with their support of overrides.
Used for different purposes, that is not a bad idea to use prefixes or suffixes to name them.
Objects can belong to several collections.
So, it is not a bad idea to duplicate a collection and just name copy differently ; instead of keeping one with a non pertinent name and confuse yourself about its use.
Of course, there is nothing bad about testing things in a temporary scene.
But depending on complexity of what you test ; maybe a temporary collection or a temporary View Layer may be sufficient.