There are two parts to this:
First, when you put your objects in the scene’s view group, which it sounds as if you have done, then Composer **can** manage them for you. When you leave and enter scenes, it will show and hide the objects, transition them if you have transitions turned on etc. and if you trigger the scene to be removed, it will then remove the scene for you.
scene:create() builds the scene and keeps it in memory. If you leave the scene and come back, all of those objects are still cached and the scene is not re-created, just shown a second time. If you want to have a different scene when you come back you have to remove the scene, which will cause scene:create() to run again and build the new scene.
The simplest way to do this is to call:
composer.removeScene(“sceneName”) just before you call composer.gotoScene(“sceneName”). This will remove the display objects and when the scene is re-entered, it will be created using the new parameters you passed to it. scene:destroy() is called as part of composer.removeScene() to give you a chance to remove objects that are **not** display objects, like native things, audio, etc. You generally don’t do much in scene:destroy().
Rob