Ad 1. The timestamps in OPC are always in UTC. QuickOPC reflects this by returning timestamps in UTC as well, in a DateTime structure which has its DateTime.Kind set to DateTimeKind.Utc. If you need local time, you should be able to convert the timestamps using methods such as DateTime.ToLocalTime(). Let me know if something does not work as described in this respect, or if you need further help with it.
Ad 2. In general, the data returned from OPC Server are in a form of Value/Timestamp/Quality triples, for which we have a DAVtq class in QuickOPC. We have a strictly followed design rule in QuickOPC in that we never "make up" value or timestamp or quality ourselves, and we never modify them as they come from the server. You can therefore rely on the fact that whenever DAVtq is available (i.e. there is not an error), it *is* the DAVtq that cam from the server.
How the OPC server creates the timestamps is up to the server. In the situation you have described, it looks like that the KepServerEX timestamps a value when it is subscribed to or being read. You need to talk to Kepware about this. Be aware that the precise behavior may be different with a simulated tag versus a real one coming from PLC (or, it may possibly even differ a driver from driver, in their model - I do not know for sure).
Best regards