/usr/local
é um local em que os softwares utilizáveis por todos os usuários podem ser instalados por um administrador.
~/.local/bin
é um local em que um usuário pode instalar software para uso próprio.
Existe alguma confusão na história da estrutura de diretórios usada em diferentes distros e comunidades, mas isso cobre as diferenças básicas.