Cuál es el significado y el razonamiento detrás del Principio Abierto / Cerrado?

El Principio de Abierto / Cerrado establece que las entidades de software (clases, módulos, etc.) deben estar abiertas para la extensión, pero cerradas para la modificación. ¿Qué significa esto y por qué es un principio importante del buen diseño orientado a objetos?