I.e. if the Secondary has a system crash and data wasn't committed to disk, and simultaneously the Primary then goes away, yes there is a chance for data loss... however this is a double fault (kind of equivalent to 2 mirrors failing in sequence: if Mirror 2 fails, then comes back and is in the process of syncronizing when Mirror 1 disk dies)
Normally if the Seconday has a system crash, the SRL from the Primary will re-send any data that wasn't committed to disk on the Secondary (and until the Secondary catches up, it is in asyncronous mode).
If you want to make absolutely sure that both sides have the exact same data, full stop, then you want to use "syncronous = fail". This means that if you loose connection to the Seconday (e.g. system crash, or network failure), then Oracle on the Primary site will get an I/O error and data will no longer be committed. Most customers do not choose this option since it means that a Secondary or network outage has the effect of application down time.