This is called object pairing. I think you'll find it useful!
When you run an action, it repeats the action once for each instance. For example:
+ Every 1000 ms
-> Sprite: spawn bullet
This will repeat the 'spawn' action once for each Sprite instance that exists, so if you have 5 sprites, 5 bullets spawn. (If the conditions involved 'Sprite' at all, then the action only applies to those which met the event, but when they aren't in the event, the action applies to all of them)
Similarly, when you say 'Set X', it repeats it for each instance. However, the value of 'GoodBullet.X' is not constant for the repetitions of the 'Set X' action. As it switches between instances of 'BulletParticle' running 'Set X', it also switches between instances of 'GoodBullet', kind of rotating round all the objects pairing them up. This means objects naturally just pair up together, which, more often than not, is useful.
By the way, you might benefit from putting 'GoodBullet' and 'BulletParticle' in a container.
Hope that helps