é melhor criar um arquivo externo para o meu código JS ou apenas colocá-lo no código html?
É melhor criar um arquivo externo para o seu código JS. Também é melhor ter um ou dois arquivos que você serve para o cliente. Mas também é melhor dividir seu código JS em vários arquivos por questões de manutenção. Para poder fazer isso, você pode usar pré-processadores como o Gulp que combinarão seus diferentes arquivos JS em um arquivo.
Servir menos arquivos é melhor, pois o cliente terá menos solicitações HTTP para manipular.
Colocá-lo na página é mais rápido para carregar?
Sim, obviamente, é mais rápido, pois você faz apenas uma solicitação para o HTML, enquanto faz muitas solicitações (pelo menos 2) com seu código JS como externo. Isso é apenas se o seu código JS não for minificado em nenhum dos lados, e isso não levar em conta o quanto será mais difícil manter seu código, se estiver tudo em uma única página HTML.
Posso alterar as permissões para negar as solicitações dos usuários para o código, mas a página html ainda pode chamar o código?
Não, você não pode. Código JS, como código CSS e código HTML, é conteúdo estático. Isso significa que, uma vez no navegador, o cliente pode fazer o download completo e do conteúdo. Todos os arquivos, imagens e scripts estão abertos para download.
Porém , você pode minificar / modificar seu código para que seja mais difícil para um ser humano usá-lo. Isso é apenas uma consequência da uglificação, que foi feita para o desempenho primeiro.