Flatness and squareness as (@kbraby points out) of heads are generally checked with precision straight edges and feeler gauges. Before and after - low tech but effective.
- Parallel to the long edges in multiple places
- Diagonally across corners
- Perpendicular to length at multiple places
Using the feeler gauges you’ll get where the high and low spots are. The head gasket can take of a bit of the difference. The Engine manual should give what the maximum allow gaps/high spots are. If they are within the allowable limits, I’d suggest leaving it alone unless you are going to have a machine shop do it.
Also remember, that the more you remove the closer the valves when opening are going to be to the pistons. If it is an interference fit engine this could really be a problem if more than few thousandths. If non-interference make sure you know the clearance isn’t reduced so that it can now touch.
@artg_dms point of effect on compression: clean the head really well especially the chambers. CC them as precisely as possible (don’t use water, it doesn’t “wet” to iron surfaces very well and will form a pronounced meniscus at edges. Use some sort solvent - check manuals). Record for each cylinder after machining. This will allow you to calculate the compression of each cylinder. Depending on change you may have to use higher octane fuel and change ignition timing slightly.
Without fixtures, the cost of 5+ new inserts for cast iron need to be added to the cost if using a shell. After you deduct that cost plus any fixture tooling will be what you saving vs trashing the cost of a head replacement.
There are three operations I’d always send out:
- Head/Block surfacing/decking
- Line boring for the crank
- Oversize cylinder boring
Rest of work is much more tolerant of being off or being able to make it right. But those above are highly dependent proper tooling/fixturing and a machine with very little runout. I would not put our knee mills in that last category.