rquivos @DLL e LIB - o que e por qu

Eu sei muito pouco sobre DLLs e LIBs, exceto que elas contêm código vital necessário para que um programa seja executado corretamente - bibliotecas. Mas por que os compiladores os geram? Não seria mais fácil incluir apenas todo o código em um único executável? E qual é a diferença entre DLL e LI