2. Are the script being executed as fast as they can, while the voice is speaking the "text queue", or each script execution starts after all the previous text is already spoken?
I believe that each script is run as fast as it can, and the next script will run immediately, even if the previous one is still speaking. As far as I can tell, the speech is added to the queue to be spoken, so multiple scripts can all run, before the first one has finished speaking.
I'm not sure about the rest. As I understand it, EDDI runs each script in it's entirety, building what needs to be said, then sends the output to the speech queue in Windows. I don't think EDDI has much control over it after that (other than to stop all the speech, see below), so I'm not sure if there would be a way to tell what is being spoken at any moment.
3. Somewhat related to the previous question: there's a way to avoid having the very same test more than once in the speak queue? I mean: either executing a script only for the last one occourence of his trigger event, or avoid launching it if it's already on the queue...
The only way I've got around this is to create a timer in a script. If the script runs again, and the timer is still less than a certain amount (say, 1 or 2 seconds) then it will skip the rest of the script. So basically, put the whole thing in an IF statement that checks the timer. I used to use this method for the 'Settlement approached' script when there were multiple Journal entries when approaching a planetary base. I added a timer to prevent anything after the first one from running.
4. There's a way to "stop" a script speaking?
If you use Voice Attack, there is a command in the default EDDI profile called "Shut up". It contains the following command:
Execute external plugin, 'EDDI 3.7.3' using context 'shutup'
which will stop all speech (I think it empties the speech queue, but I'm not sure about that).