"Lose" not "loose". It is a pet peeve of mine how more than 50% of the time people use the wrong word.
No, it won't lose data. The DAQ has a buffer that will collect data. As long as the buffer is big enough, and you return to the read state often enough and collect all the data that is in the buffer, you won't lose anything.
For #3, I wouldn't make that a separate state. Just a condition, perhaps a boolean flag you keep in a shift register that tells whether or not you need to log the data after it is read. That could be done in the read state, or passed through a queue to a separate loop (producer/consumer) to handle the data logging.
#2 seems to be a special condition of #3, where you are only logging at certain times. In which case you doing some comparisons to determine when the time has been reached and set the boolean to true.