This calculator lets you mess with milling depths and copper spacers and all that to see how they will affect compression ratio and cam timing. See the notes at the bottom for interpretation of the field values. The fields are primed with standard values for a VW 1.8 8v motor with 10:1 CR.
Use the Inch function, as in "Inch(0.040)", to enter values in inches. You can enter expressions with arithmetic operators into the fields, they will be evaluated properly. For example, enter "80.5+Inch(0.020)" into bore for an 80.5 mm bore with a 20 thousandths overbore.
Connecting rod length and intake valve closing are used to compute trapped compression, i.e., how much of the stroke is really used to compress the intake charge. (Trapped CR is often called "dynamic CR," but the use of "dynamic" is completely incorrect, this measure is static and is a result of engine geometry and not its dynamic behavior; a true dynamic compression ratio would take into account the VE, gas flows and resonances in the system to determine the "swept volume.")
Piston clearance and top ring height are used to compute the volume of the space between the piston and cylinder bore, above the top ring and below the piston face. People usually ignore this volume, but it is very significant at higher compression ratios.
Piston dish is negative if you have a "domed" piston. Deck height is the amount of block above the top of the piston. If the piston pops out of the hole, then use a negative deck value.
The cam gear pitch diameter allows me to compute the change in angle of the gear produced at a given change in head height (due to milling or spacers). For an 8V VW, the gear is 132 mm in diameter.
A negative value indicates that cam timing is retarded, a positive value means it will be advanced. (As you mill the head, you have to "take up the slack" by turning the gear backwards, i.e., retarding it.)
Milling to a negative depth is different from adding a spacer in that the milling computations allow for a non-circular section to be removed. (Milling and spacing will be the same if you enter zeros in the chord depths.)
When the shape of the combustion chamber at the milling surface is not circular, you can approximate its shape by cutting one or two chords from the chamber. For an 8V VW engine, these chords are 8 and 11 mm. This image shows how to measure the chord depths:

Spacer thickness should be the difference between the entered gasket value and the new head position. For instance, if you are replacing a 0.070" gasket with a 0.125" spacer, you would enter "Inch(0.125-0.070)" in the "Spacer Thickness" field.
Alternatively, you could set the gasket thickness to zero (modifying the nominal CR) and set the spacer thickness to whatever you are installing. But! Be aware that if you set the gasket thickness to zero, then the cam error computations will be wrong! Cam error uses all the "Engine Parameters" dimensions to compute a zero error value, then computes stack height difference from the nominal position using the "Change CR" values.
The resulting trapped CR is calculated using original cam timing, not the new cam timing with the error term.