It is preferred to get the distance correct by hardware changes (leveling screws). But it is possible to do it with software. You can not only change the Z offset in the slicer or in the configuration of Marlin, but also with G-code commands.
The "paper drag" method is perfect for determining the correct Z level. Once you leveled with the paper, you do not need to create an offset to account for the paper thickness, however, there are purists that do that. So basically, what we call Z=0 is in fact Z="paper thickness", unless you are a purist. But a slightly larger gap makes printing much easier. Too small heights cause e.g. rippling effects or too much pressure build-up in the nozzle. In order to change your offset after leveling, you could try one of the following methods. This is sometimes a useful method for creating a little extra offset for printing PETG, but personally I do not do that.
In Ultimaker Cura: Open the plugin manager ("Toolbox"->"Browse packages...") and install "Z Offset Setting", a new parameter will be available in the "Build Plate Adhesion" settings menu called "Z Offset". (See also this older, not up-to-date answer)
In Marlin configuration file, modify the MANUAL_Z_HOME_POS constant:
//#define MANUAL_Z_HOME_POS 0
In G-code:
By adding the following lines to your start G-code (see e.g. this answer) using the G-code command:G92
G0 Z0.2 ; Move the head to 0.2 mm (so now 0.3 on your machine)
G92 Z0 ; Call this Z = 0
or when you are able to connect to the printer over USB using a printer terminal (e.g. Pronterface, Repetier or OctoPrint) using the G-code command:M206
Use M206 to apply a persistent offset to the native home position and coordinate space. This effectively shifts the coordinate space in the negative direction.
M206 Z-0.2 ; Will raise the Z height by 0.2 mm
M500 ; Stores the offset in memory
Alternatively, when you cannot connect through a terminal, putting the last 2 lines in a text file and saving that as a file on an SD card and "printing" the file will also store the new offset (if .gcode is enabled in the configuration file: M500)#define EEPROM_SETTINGS // Enable for M500 and M501 commands
Here is the mental framework that I use to reason about PETG: In a nutshell you want to avoid nozzle contact.
Unlike most other plastics, PETG sticks to hot brass really well and every time the nozzle moves through material it will pick up some of it. Material around the the nozzle then sticks to a random place creating a blob. It can also cook, turn transparent brown and drop into the print. Investing in a plated nozzle or silicone socks helps but doesn't eliminate the problem completely.
Now to the questions.
Distance to the plate has to be such that the plastic is laid down precisely without the nozzle dragging through the material (remember, avoid nozzle contact). Precise lines require the build plate to be level and the flow perfectly calibrated. If nozzle is too low and/or the layer is over-extruded then PETG will stick to the nozzle and rip the lines off the plate again. Inspecting the first layer is required for best results. I like to print a layer test pattern after the flow has been calibrated and tweak Z offset in 0.02mm increments until it's perfect.
With many other plastics it's ok to have a large amount of "squish" in the first layer as it helps to work around minor leveling issues. This is where the cookie-cutter recommendation to raise the nozzle when printing with PETG is coming from.
Flow has to be near perfect. Down to one percent perfect. Even a slightest over extrusion and some of the excess material will end up on the nozzle when it makes the next pass. Under extrusion isn't great either as this can lead to holes and affect overhangs where thinner strands of a previous pass may not be enough for the next line to stick to.
There are two critical parameters: diameter of the filament and extrusion multiplier. This is how to determine the settings:
I perform flow calibration for every new roll of filament.
You can trick the printer into applying an offset using the command:G92
G0 Z0
G92 Z0.1
First, we move the nozzle to . Next, through the Z=0 command, we tell the printer to, from now on, treat the current position as G92. This effectively applies an offset of Z=0.1 to the Z-axis, since if we now executed -0.1 again, the nozzle would move down G0 Z0.0.1mm
Note that this needs to be done after homing and leveling to be effective.
Of course, you don't necessarily need to move the nozzle to for this to work. You could also just insert Z=0 after G92 Z15.1 to get the same effect.G0 Z15