1) it is processed immediately after the $MQ fires its message (it
asynchronous).
2) The condition itself does not fire a state change event - the state
machine does. A state machine change event is fired when a state
machine has a state change (which is defined by its "if" attribute).
At the point of a state change, all elements in the DOM with an "on"
expresssion that has that state as a condition will get triggered
(e.g., if the "test" state machine changes to "state1", the following
expression will get executed: on="test[state1] then show")
If a state change event occurs and your element is not yet in the DOM,
it will not receive the state change event.
The reason your menu was not getting the initial state event was
because the menu was not in the DOM at the time the initial state
event was fired, since your state machine was defined above the script
widget that fired the message to populate your menu iterator.
Appcelerator fired the initial state change, then it processed your
$MQ that populates your iterator (but by that time the state change
event had already happened so the elements in your menu iterator
missed the event).
3) Not currently. We've talked about this type of thing but it's not
implemented yet.
4) Toggle does work with any CSS attribute
Hope this helps.