The low level rcl functionality seems to be interrupting threads waiting on wait sets by allowing the guard condition to become ready when being triggered by another thread.
The rclpy implementation seems to add a callback to be executed by the executor in this case.
I have seen guard conditions being used for implementing executors which can be interrupted while waiting for work to become ready, but not much else (maybe someone more experienced knows more use cases?).
I dont exactly know if triggering the guard condition works only if it is currently waited on or if the state is being stored and reset somehow.
Update: After some tests and looking at the rcl guard condition tests it seems that a guard condition remains triggered until it is waited on.