I don't think the "for each" would be the issue. I'm kind of curious if the "or" us throwing it off when combined with the drag n drop behavior. It shouldn't though. Actually it could be the drag n drop behavior isn't correctly handling multiple objects being dragged at once.
Until we can prove that one way or another we could get rid of the dragndrop behavior and do it ourselves with events. Like so:
on sprite2 touched
--- set id to touch.id
--- set dragging to true
dragging is true
for each sprite2
--- set position to (touch.XForID(Sprite2.TouchID), touch.YForID(Sprite2.TouchID))
on any touch end
pick sprite2 id = touch.id
--- set dragging to false