Rodrigo, quando você instala algum pacote do node, este pacote tem vários pacotes que fazem ele funcionar.
Por exemplo, no código do fonte do Express ele pode usar uma biblioteca como o Lodash para fazer alguma funcionalidade especifica desta lib.
Como várias bibliotecas podem querer usar esse Lodash, o npm é inteligente ao ponto de instalar esse cara somente uma vez, e toda lib que precisar dele para funcionar consulta desta unica instalação.
O arquivo lock, serve para mapear quais arquivos usam o que, para deixar o funcionamento do Node e o relacionamento das bibliotecas mais rápido
Espero ter ajudado :)
Link para mais consultas: https://docs.npmjs.com/files/package-lock.json