Registers loaded by other inputs need not a reset.
Asynchronous resets typically use latches, but the implementation is up to the vendors.
Synchronous resets can force (mux) zeros as data.
As the Why these do not create errors while running RTLs but only in GLS?,
that is not necessarily true. If you use type logic, the X’s will propagate through the design. If you use type bit, the registers are defaulted to zero at startup.
I lowered the price to the bare minimum for the book at Amazon Real Chip Design and Verification Using Verilog and VHDL($3)https://rb.gy/cwy7nb
I strongly recommend that you take a look at it, see the TOC at AMAZON.