In general:
A loop is executed within one tick. Trying to use the wait action would force C2 to spread the loop over several ticks, which not only is difficult, but also error-prone and would break the intention of a loop. That's why the wait action doesn't work inside loops.
You should always use a method suitable for the behavior you intended. If you want to create an object every 0.3 seconds, well, use "every x seconds"
I can't tell anything to the other problem as I avoid installing the newest versions. They often introduce new issues or break older behavior, which isn't helpful for projects that last longer to develop. But from your question I'd guess it is a mathematical problem? Maybe the positions are calculated in a wrong way.