Hardware abstraction is a technique used in computing to create a simplified interface for interacting with hardware components, allowing software to communicate with hardware without needing detailed knowledge of the specific hardware. This enables greater portability and flexibility in software development, as the same software can run on different hardware platforms with minimal changes.