Best practices/methods to list a variable number of levels/Blueprints?

Blueprints do support inheritance, and any blueprint derived from the base class does inherit all of the functionality from the parent class. It is also possible for child classes to override the default functionality. In order to create a child class, right click on the parent class in the content browser and select “Create Blueprint Using…”

As for iterating through the list, the answer is actually much easier than you might think.
Create a Struct for your Soundtrack information with whatever variables you want. Then, in your Puzzle Stage base class, create an array variable. Create the structs for each song, either procedurally or manually, and add them to the array.

After that, you can iterate through the array and perform whatever functions you want. Alternatively, you could create a class specifically for your music and put the functionality there. One small note though. To my knowledge you will not be able to act upon something that does not exist in your level unless it is added to your game mode class. So, if you want to act upon something that does not exist in the scene, that would be a good place to do it.

Hope that helps
Tony