Relative to your questions about how the Zeo splits up its time intervals, this diagram I put together while working on the Android version of the Zeo shows how it works:
Note that what the Zeo calls “Total Sleep” does not include time-to-fall-asleep, time-awake-overnight, and any unknown time (say if the headband slipped off your head plus an interval always at the start of the “Base Hypnogram” since the “Base Hypnogram” always starts on a 15 minute interval boundary).
Also note there is at least one “bug” in the Zeo Alarm display … the “Time to Z” is in 30-second epochs, not minutes, so the 17 is 17 epochs aka 8.5 minutes.
So your XML data is saying you put on the headband at 23:51:39, you took 8.5 minutes to fall asleep (aka at 00:00:09), you had REM+Light+Deep of 7h58m plus 7 minutes of wakeups totaling 8h5m, bring you to a “end_of_night” at 08:05:09 (which you can find in the XML files) when you took the headband off. Note the “Base Hypnogram” starts at 23:45:00 which is why it has a bunch of leading zeros in it before 23:51:30 is reached.
The “Rise Time” shown on the Alarm clock face is perhaps misleading: that is the time at which the Alarm would attempt to wake you if you had the “SmartWake” enabled. According to the Zeo’s Export Format PDF: “Rise time: The date and time the user awoke. This is computed as the time of day at the end of the last 5 minute block of sleep in the sleep graph”. As you mentioned you had laid in bed for 10 minutes after waking up, and you were in REM and wake-able even before that, so the Zeo approximated that “Rise time” as 7:45 am instead of 7:55am.
Regarding Deep vs Light-Deep, read the basics on Sleep Intervals: https://en.wikipedia.org/wiki/Sleep#Stages. Note the Zeo follows the current recommended stages REM (#2), NREM1=Light (#3), NREM2=Light-Deep (#6), and NREM3=Deep (#4), with Awake (#1) and Unknown (#0).
In the “Display Hypnogram” which shows on the Alarm clock face, Light-Deep is just shown as Deep, and the “Display Hypnogram” will never have a 6 in it. The historical reason for this is that first versions of the Zeo Alarm could not detect NREM2, and thus all NREM2 was classified as NREM3. Later and the final version of the Zeo Alarm improved their algorithms such that they could detect NREM2 vs NREM3, so they added NREM2 kind of as a kludge (hence the digit 6 and the Deep sum still including NREM2).