Uh. The callback is used to get custom data of "each" instance.
Since sprite bank only can save general properties like "x","y","width","height",..etc. Other properties, for example, "speed" in bullet behavior can not be saved automatically.
When saving instances, each instance will trigger this function (callback) defined in action. User can put this instance's custom data to return[name]. For example, put speed into return["spd"].
Then, when loading instances, each instance will trigger callback function, and put previous saved data (return[name]) to prame(name) by plugin automatically. For example, you can get speed from param("spd")
It looks like passing something from save to load for each instance.
return[name] --> prame(name)
See the example in first thread.
If you save 5 instances, callback will be triggered 5 times for each instance. That why "the callback only destroys one instance". And the sprite bank is been cleaned in callback when saving.