Uma dependência é exatamente o que o nome dela diz: Dependência.
Meu software X depende da biblioteca Y para rodar. Logo, Y é dependência de X.
Vou trazer pro mundo Java (entendo nada de PHP). Quando você precisa de uma biblioteca especifica, de uma instalação externa ou de “qualquer coisa que não tenha vindo com o SDK/JDK”, você está com uma dependência. Existem N formas de gerenciar dependencias, você pode instalar na mão, você pode usar um gerenciador, você pode pegar só as classes que precisa da biblioteca (perigosissimo), enfim…
Vantagens de usar um gerenciador de dependências: Toda! Automatização do download destas, atualização automática para a última versão, confiabilidade de que essa biblioteca sempre estará no projeto… Depende das ferramentas que seu gerenciador tem. Por exemplo, no Gradle, eu buildo, baixo todas as dependências, gero um Jar e executo. Em, sei lá, três segundos.
[]'s