Why does cl_crosshairgap accept a negative number?
Because the value measures the distance from the four lines to the screen's exact center: a positive gap pushes the lines outward, zero touches them to the center, and a negative value like -2 overlaps them, shrinking the empty gap in the middle until it nearly disappears.
What is the difference between cl_crosshairstyle 0 and 4?
Style 0 is the legacy dynamic classic, which expands when firing or moving; style 4, labeled Classic Static in the game menu, keeps a fixed size regardless of movement, which is why most competitive players pick it for a constant visual reference.
Does pasting the commands into console already save the setup?
Not by itself: commands typed into console only apply for the current session and are lost if the game closes without saving; to keep the crosshair across matches you need to write the block into a file like autoexec.cfg or run host_writeconfig after pasting.
What happens if cl_crosshaircolor is 5 without r/g/b set?
Value 5 flags a custom color, but without cl_crosshaircolor_r, cl_crosshaircolor_g and cl_crosshaircolor_b set, the game falls back to whatever values were last saved to disk for those three convars, not a default white or black; that is why the generator always includes all three lines alongside the 5.