The general way to use values from a particular instance is to pick it with a condition the footsteps1.x will be the X of the one that's picked.
You could also not use picking and use footsteps1(5).x to get the X of the fifth instance. But picking is probably easier to read.
You can use an array of you like, I mean if it's easier to understand. It probably isn't needed though since the object list can be thought of as an array too. Reading the manual sections on how events work could be a useful reference.
Generally you need global variables or global objects to pass information between layouts. The persist behavior saves an objects state so it's the same if you leave a layout and come back. If the events are overwriting the state then you'd need to rework the logic of the event sheet.
The overall logic of your game should be pretty much the same as if you made it in any other language. My solutions are probably too terse to be useful since the logic is obscured away so it's not obvious to others.