Save data set of variable count of some data sets

I know, that blueprint has saving system, that allow save/load data for given profile and given segment (e.g. load from profile “Jack Sparrow” his information of all guns he made, and don’t mind about another data, like achievements, gold, aka-nicknames etc.)
But the problem is that if I now using C++ it’s got more difficult cuz’ there is many ways to do this. But what is the best?
For now I have universal gun, that has bullet and gun itself setups. I mean player can setup gun as he want: mass, energy (multiplier), sharpness, bounciness, explosiveness - for bullet (last three is bool and float in pair); projectile velocity, fire delay, bullets per shot - for gun. It is pretty obvious what type of each parameter. There is also planned grenade, rocket, gas and whatever-I-will-come-up-with-projectile.
What save must look like:

Let’s imagine player (who spend a lot of time adjusting his weapon) made next count of setups:
19 - gun setups;
24 - bullet setups;
10 - grenade setups;
26 - rocket setups;
5 - gas setups.
In total we need to save/load 84 sets of different size + name of each setup (and yeah, I know about save game size limitation on consoles).
The best is to make it separately from other data, that must also be saved.

Can I use separate save files/data? Do I still need binary reader/writer for this? If so, do I need any global container class (e.g. in game instance class), that will automatically parse save data on launch and give these setups “on a plate”? I know it is pretty lazy thinking, but is there any easy method to do it, like it is realized in blueprints?
Bad thing that in case of these setups can get or lose params then I need to erase save data each time when changes happening.