I don't know if I'll be able to explain this correctly, but I'll try. And there really isn't an experience league description of it, it's just what I've experienced and found.
When you are running IF statements on collections it's not just looking at a single object to validate if it's true or not true, it's looking at an entire collection and will repeatedly look at the data (iterate) through it to validate it. It's a little different than if you were looking at just regular objects.
If you want it to only show the most recently completed task with a milestone then you'll have to filter for it. You could use something like actual completion date was last week or something a
For the next incomplete milestone you could filter for it by using something like can start (if you use predecessors), handoff date or another indicator that the task is next in line and could/should be worked on.