Los hard links establecen por decirlo de alguna forma nuevos nombres para un fichero, de forma que ese nuevo nombre no sólo referencia al fichero si no que tiene la misma validez de cara a cualquier operación hecha sobre él. Si borramos el fichero usando uno de los nombres dicho fichero seguirá existiendo mientras haya otro nombre para él que no haya sido borrado.
Los soft links en cambio simplemente apuntan a donde está el fichero referenciado, y si bien las operaciones de lectura o escritura que hagamos en él las estaremos haciendo en el fichero original, si por ejemplo borramos el soft link el fichero sigue intacto (y a la inversa, sólo que el link ya no apuntaría a ningún sitio válido y por tanto no funciona). Viene a ser parecido a un puntero en programación.