There are different ways to do it, but my approach is to store each level, it’s behavior, objects and layout in a TMX file and then associate that file with a level ID. It also makes it easy to reuse levels.

The simplest way (maybe not the most elegant) would be to have each level as a separate scene (or a level scene which would prepare it based on level number). On the selection screen you’d put a lot of buttons and assign each of them an unique tag (e.g. level number, or some kind of combination of chapter and level number) and each of these should have the same callback function, which would call some kind of level manager passing the tag and this manager would then decide what to load.