No workarround needed.
You can do things (actions) with a newly created objects, either right after the creation or in the 'on create' event.
You can NOT read things (expressions) from a newly created object until the next root-level event.
Picking depends on expressions (by UID is the only exception), so you can not pick a newly created object until the next root-level event.
You set the instance variable explosion.size to 0.5. Thats is possible, as said, its just an action. But read that variable is not possible until the next root-level event. 'On created' just runs as it is on the same time and place as the creation action. So it is no new root-level event.
How to do this the easy way? And that is not a workarround, that is just how things go.
Give the sprite an instance boolean 'JustCreated'.
Right after the creation action, set that boolean to 'true'.
Now just a totaly new event with the condition (root-event) ..
Condition > Sprite > Is boolean instance set > 'JustCreated'
Action > set 'JustCreated' to false.
Action > anything you want to do with/read from the sprite.