This is an excellent explainer:

How Does a C Debugger Work? (GDB Ptrace/x86 example) - (gdb) break *0x972
blog.0x972.info/?d=2014/11/13/

Very approachable. If you ever ran gdb and heard about the concept of "instruction pointer", you probably know enough to understand this.