It depends upon your desired accuracy and the equipment you have. I use Tormach's TTS system on both my Tormach CNC mill and my RF30 clone. The tools are loaded into ER20 holders and I can predetermine offsets off the machine. I use a tenths reading digital dial indicator for locating the surface and for zeroing a digital height gage. The tool offsets are then measured with the height gage and recorded in the tool offset table on the CNC mill or as appropriate subdatum points on the RF30 clone DRO.
For a more expedient approach, I will bring a tool down to just touch the surface as indicated by a light scratch. This will get me to within a thou. I have used the feeler gage and the paper method too and they are usually with a few thou or better. For less critical ops like drilling, i will just etball the tip of the tool. Drilling depth callouts traditionally are done to the shoulder of the drill and the distance from the shoulder to the tip can vary depending upon the width of the web and angle pf the cutting edge so there can be a fair amount of variation anyway.
For a project that I did some fifteen years ago, before the CNC mill, I made a sensitive version of the Z axis zero setter using a relay contact. The contact was set up outside the work zone and I could zero each new tool using the incremental setting on the DRO. This was useful as the original surface of the part was modified with previous machining steps which prevented zeroing on the part. I used the relay contact because I was using tools with diameters as small as .005" and over shoot by a small amount would have destroyed the tool on a standard tool setter.