I think the way most people get started is to build simple C programs, and then use objdump to try and understand the output of the compiler (use -O0, of course =)
The intel CPU manuals have a lot of the low-level systems information about the CPU (like virtual memory, interrupts/exceptions, etc). If you enjoy/don't mind reading that type of technical documentation, you should start there.
Good luck, and thanks for reading.