Like with creating objects, objects aren't really destroyed until the next top level event. This is by design; beginners often make events with actions like "destroy enemy, create explosion at enemy.x, enemy.y" which would not work if the enemy was really immediately destroyed. In accordance with this, the object count and picked count still include an object flagged as destroyed until it's really destroyed at the next top-level event.
Also, it is possible for PickedCount to return 0, but only in an OR block. Consider:
SpriteA condition
SpriteB condition
It's possible no SpriteAs meet their condition, but because a SpriteB does, the whole event runs - but no SpriteAs are picked.