Instruction reordering is a compiler and processor optimization technique that changes the order of instructions to improve performance and resource utilization without altering the program's intended outcomes. It enhances parallel execution and minimizes pipeline stalls, but requires careful handling to maintain data consistency and avoid hazards.