Yes, I understand it.
You're moving your platforms manually, which means they may perform differently with slower/faster monitor refresh rates. In other words, you're doing it wrong
The way you fix it is to use TimeDelta (which helps you maintain the proper speed on different computers), or use a behavior such as Bullet.
Also, you have multiple detectors to bounce your platforms, and you're using a private variable to toggle their direction. You don't need to...
Take a look at my Platform School tutorials for an example of how to make moving platforms in a more efficient and accurate manner, that requires fewer objects, events, and variables, and will run at a constant speed regardless of refresh rate. Moving platforms are covered in Lesson 4, but you might want to take lessons 1-3 first.
As for Path movement, I believe there is a path object in the works that will be released in the future.