The Lists allLines is type GameObject also the List instancesToMove is type GameObject.
The code as it is now will move all the objects in the two lists at the same time.
What I want to do is that each iterate in the loop it will take the first item from allLines and the first item from instancestoMove and will move this two items. For example take item at index 0 in both lists and move the two items. Then next iterate get the items at index 1 from both lists and move the two items and index 2 and 3 and 4 and so on.
The idea is to move at the same time each time only two items from the two lists and not all the items.
Your belief about what your code does is incorrect. (Or, possibly, your description of your beliefs is inaccurate.)
The code above, on each iteration of the loop, takes a corresponding pair of items and deals with them. On the first iteration, it deals with item [0] from both lists. On the next iteration, it deals with item [1] from both lists. (Which possibly skips an item, as you still have not listened to my advice about destroying objects as you iterate over a list, but whatever.) Then it deals with [2], followed on the next iteration by [3], etc. This appears to be exactly what you’re saying you want to do.
Perhaps you’re saying you don’t want to loop here at all – you want to instead deal with only one pair of items, each time this code is run? In that case just take out the loop, and replace ‘i’ with some property on your class that you update elsewhere.
I don’t know enough about your code. The counter thing seems a little strange. It never gets zeroed out after each new movement. All I can tell you is, the code above works. I use it. There is something in your code causing a problem.