Firstly Welcome @VliXion !
Depending on what you're trying to do you could also preload scenes, to say the main node or any node which has sub scenes.
You can do this via something like:
var shop = preload("res://shop.tscn")
(when using preload you still will need to instance the scene before using it.)
This causes the scene to be loaded, but not instanced at the start, which could be handy for performance. Since you might not want to load a very big scene while playing and rather do it beforehand in a loading screen so you don't cause lag.
Smaller scenes shouldn't be a problem but can also cause lag when loaded in larger numbers at the same time of course.
I was also wondering how many scenes I can instance and if there is such a thing as too many scenes instanced?
I don't know if godot has a hard limit for this, but theoretically you could continue until you run out of processing power/memory.
You can do something like $”Shop”.hide() and $”Shop”.show() to turn it on.
You could do this, but keep in mind that hiding a scene doesn't unload it, this means it could stay active in the background and this will likely also take up performance.
Hope this was a little helpful and good luck with your project.
P.S. in order to make a scene appear after instancing it you also need to call get_tree().current_scene.add_child(<your scene here>)
Or some variant of that.