I don't know about offline UX studies but I'm pretty sure that in the ideal circumstance the user shouldn't really notice that they are offline. Everything should just work as normal, be saved in offline storage and then be synced automatically once they're online.
Mobile applications are pretty awesome at syncing and not caring whether you are on/off line. My primary example would be Evernote as that's what I use the most offline on my mobile.
- whether he/she is offline at the moment
For starters - here's a nice big list of offline states. But other's here have answered that question well enough.
- For how long he/she has been offline
This is done pretty simply by saying 'last saved X seconds / minutes ago', Google docs kind of does this but hides it under a tooltip:
- When was his/her browser storage last updated
That should be answered by 2. I think.
- and How many records have been created locally without internet and they are still pending synch-out?
Evernote has a nice touch for this, they treat it as though its 'waiting to be synced'. I've been seaching for the mobile UI for this but haven't found it, this is what it looks like. Where this is the document / notes overview.
Edit: I came across this very useful and detailed article about Offline or Online (UX):
With reference to the document refresh icon I was showing, that's actually effectively called a 'dirty' document, which equally can be applied to fields in a form:
Dirty records
When a record has been edited, but not yet synchronized back to the server database, it is considered to be “dirty.” Inherited dirty occurs when a child
record has been saved, but not yet synchronized.
After an edit or new record is saved, markers are used to indicate:
- “Dirty” records (default is bright orange triangle).
- Record has been saved, but not yet
synchronized.
- New records (default is blue tri-
angle).
- Record that has been added and saved, but not synchronized.
- “Inherited dirty” records (default is pale orange triangle).
- Parent of a “dirty” child.
Markers are removed when the data is synchronized