Start render is measured by capturing video of the page load and looking at each frame for the first time the browser displays something other than a blank page. It can only be measured in a lab and is generally the most accurate measurement for it.

msFirstPaint is a measurement reported by the browser itself about when it thinks it painted the first content. It is available from javascript and can be reported from the field. It is usually pretty accurate but sometimes it reports the time when the browser painted nothing but a blank screen.

I read your earlier comments from 2009 where you were calculating startRender time by calculating whether dom dimensions are changing or not.. now you are calculating by observing the video captured... correct ??

Yes - mostly because the browser under-estimates the first paint (doesn't include some of the graphics pipeline) or if the paint is of legitimate, but white, content. There are a few other cases as well but those are the most common.