I have looked at your program, and im not really sure I understand what you are trying to do. But I think you suffer from the same problem as some of us also have experienced. Which I still find a bit confusing, as it seem a bit weird that sometimes it works and sometimes it doesn't.
Personally I try as much as possible to avoid using "system create object" in functions all together. because of them not being available as I understand it before next top level, and it seem to cause a lot more problems than its worth.
But if I understood you correct, I would change the program in such way, that you start by spawning all the blue dots in the start of layout. And then make an variable like "Blue_dots_spawned = 0". Then add an event that will trigger on "Blue_dots_spawned = 0" and in that event you set it to 1, so it doesn't trigger again. Also in that event, you can use a for each "Blue dot" and then do what you have to do in the event it self, or add a function call here, that can pass the UID of the blue dot, and do it in a function instead, if you prefer that.
Now instead of using "System create object" to spawn the symbols make the current blue dot spawn them instead, and then destroy that blue dot afterwards. Then have symbol spawn the large yellow object, and add a if "yellow object overlapping blue dot" As you have already destroyed blue dots, that have symbols you will never select them. And then you can just add a pick random afterwards, and it will select a random blue dot, from those conditions. And then you can do whatever you want with that blue dot.
Hope you understand what I mean :D