I've just recently been using object.count in a project; I noticed that the count doesn't update within the same event, so if you have:
on sprite touched: destroy sprite; set text to sprite.count
...it still includes the touched sprite within the count, because the sprite still exists until the next top level event (I think?).
Changing this to:
on sprite touched: destroy sprite; wait 0 seconds; set text to sprite.count
...returns a count value as 0, I'm guessing because in this case it only picks the sprite that's been touched and destroying it means there's no sprites left in the pick. I'm not sure why the same picking logic doesn't return a count value of 1 in the first example.
One way I managed to get around this was:
On sprite touched: destroy sprite; wait 0 seconds; call function "count"
On function "count": set text to sprite.count
I'm sure there are other ways though.