MODX does partial page caching, and it is quite granular in how it does that.
Basically it starts by fetching the template. It parses all the
cached tags that it finds and repeats that recursively and in source order until there are no more cached tags left in the source. When it's done doing that, it will take the output it has at that point (which includes uncached tags), and writes all that to the file cache. Then it starts parsing uncached tags, and when it done all that it returns the final output to the browser.
The next, cached, call starts by getting the file cache, then parsing uncached tags, and finally returning the output to the browser.
Of course there's more to it than just this, but it's a high level overview to get you going. I've written two articles on my blog about caching which may be interesting to read as they provide you with some more insights.
http://www.markhamstra.com/modx-blog/category/Caching/
As for measuring the time, I tend to use Firebug (a firefox addon) or the Chrome Dev tools to get an idea of that.
http://markh.nl/s/04/Nkt.png - the "wachten" (Dutch for "waiting") time is the time spent by PHP (or MODX) parsing the request into a page, in this case is 178ms.