In your example, it will depend on how complex that mini game is, if it simple enough to be implement with 2 or 3 blueprint function then i wouldn’t bother create a separate game mode, and i would put those rule of the mini game into the current level game mode. On the other hand, with a really complex mini game, then sure, i would love to put those game into a separate level with it’s own game mode, rule and condition. Note that you can still pass data between different game mode, using GameInstance, which is a kind of global blueprint that can be access from anywhere.
And it is a shame but each level can only have one GameMode and you can’t change it on the fly, at least from Blueprint side, i think there is a topic on AnswerHub about switch GameMode with C++. But you can assign a GameMode as GameMode for the entire project, or you can have a different GameMode for each and every level.
The below tutorial series develop a system where multiple GameMode was used for each stage of an multiplayer game, from finding match->waitting room->select character->in game