I didn't see your sample file, so I am guessing, but when you use Create Object, the new instance does not get added to C2's internal list of objects until the next top level event after the event that created it. That means that it can not be picked or referenced in other functions until then.
(Calling a function looks like it is on a different top level event, but the function is really just extending the event that calls it, and functions don't remember any picked objects).
you can pick a new object by its UID, so if you have to call another function to do something to the object, you have to pass the UID as a parameter, and use that to pick it. Using instance variables, or anything else wont work immediately after the object was created.
adding a "Wait 0 seconds" tells C2 to not execute actions after the wait until the end of the current tick - and by then new instances are available to be pick using all the other normal methods.