My usage of wait (0):
In the same event, to make sure previous actions are completed before the next actions after the wait(0) is processed.
event condition = true
-action set variable x = call function meh (y,z)
-action wait (0)
-action set variable a = variable x
In this example, variable x is set by means of the process in function meh.
the wait (0) forces the process of the function in order to set the variable x to be completed before moving on to the next action.
Thus variable a will always be set with the result of function meh which was moved into variable x before the wait.
In short, the wait(0) allows the previous actions of the same event to be completed prior to moving to the next actions after the wait(0).
I avoid relying on the wait(0) when it involves a different event, or even a sub event of the event using the wait(0) as its unreliable and merely makes the entire event sheet wait 1 tick before processing further where it was, making it loose data and information or picked objects.
At least that's how I always see it.