In a nutshell
A pipeline splits each instruction into five stages — fetch, decode, execute, memory, write-back — and works on five different instructions at once, one in each stage, like an assembly line. Once it is full, one instruction finishes every cycle instead of every five. The catch is hazards: when an instruction needs a result the one ahead of it has not produced yet, the pipeline must stall — or forward the result early to keep moving.