When you compile a deisng with ISE, Quartus etc, there are 3 main stages (Im following the Quartus names, as this is the tool I use)
First of all you get analysis and synthesis. This syntax checks your code followed by converting it to synthesis netlist. This extracts muxes, adders, memories, logic etc from your code. You can check this in the RTL viewer. It also maps these higher level components to physical LUTs and rams in the real device you are using.
After this stage, the fitter starts, which is usually the slowest part. It takes the mapped netlist from the synthesisor and places all these LUT and rams to the actual parts in the design. It adds all the routing to connect all the LUTs, rams, DSP slices etc. If you have timing constraints set the fitter may be re-run to try and meet timing constraints.
Finally, the fitted design is passed to the assembler where a programming file is generated.
You can get a gate level netlist from post synthesis or post fitter IIRC. The post fit one will contain all the routing delays, whereas the post synthesis will just have element delays.