On the whole "it's not a stupid question" front... I'm no FRED veteran, but I've got a couple pretty complex missions under my belt, and still forgot that little wrinkle. is-departed-delay and friends prevent a directive from displaying until all the ships/wings involved have arrived, yup, hence the need to indirect it with is-event-true-delay.
Anyway... Freespace draws a distinction between true and false, and "known true" and "known false". An SEXP that has evaluated to a "known" state can never evaluate to another state, and so need not be evaluated any further. An event (or goal) becomes complete/true once it's conditions become true, but it does not become failed/false until it's conditions become known false.
This sounds complicated, but it's usually quite intuitive. Let's consider a directive set up as ( when ( is-destroyed-delay "NTC Primary Objective" 0 ) ( do-nothing ) ) . Let's suppose the Primary Objective is initially in the mission and wondering what's up with its name, anyway. Initially, the is-destroyed-delay SEXP returns false, but not known false, and so the event is incomplete. If the ship goes down, it becomes true (and known true, but mere truth is sufficient here) and the event is complete. If it jumps out... well, there's hardly a way to blow it up, so is-destroyed-delay is known false, the directive fails, and the event is no longer checked.
So, it makes sense why known false fails an event, but why does regular true make it succeed? Well, consider something like ( < ( distance "Alpha 1" "Navbouy 1" ) 200 ) in a directive about flying waypoints. You'd hate for that to go back to incomplete when Alpha moves onto the next waypoint, aye?as an aside, this can be used to "promote" regular true to known true via is-event-true-delay.
So what's known truth good for, anyway? Well, there are really two kinds of SEXPs that return known true/known false. Some represent discrete events, like is-destroyed-delay, is-departed-delay, or is-event-true-delay. Others are logical operators, like and, or, and not. These preserve the known status of their operands when possible - the and of logical and regular true is just regular true, but the or is known true, etc. So, the not of one of the first class is known false once the event has happened, and ( and ( destroyed-or-departed-delay "SC Stalker" 0 ) ( not ( is-destroyed-delay "GTC Protagonist" 0 ) ) will cause a directive to escort the Protagonist to turn red when it blows up.
...also, is-destroyed-delay and friends prevent directives from showing up until all the ships involved have arrived. I'm honestly not sure how.