Olá Wagner,
Os arquivos de script sao blockers do navegador, entao quando o navegador encontra um .js ele para a execução de renderizacao da tela para carregar e executar o JS. Por isso se é recomendado colocar a tag no final do body.
Atualmente existem solucoes mais modernas ao carregamento de scripts na página como os atributos async e defer. https://flaviocopes.com/javascript-async-defer/
A diferença entre eles está na ordem de carregamento. O async vai ser baixado junto com os outros arquivos e depois executado na ordem que forem carregados, o defer vai ser baixado e soh executado quando terminar de carregar e parsear o DOM.
Quanto a ordem correta, é só colocar antes os arquivos na ordem que vc quer que eles carreguem. eg: lib.js, componente1.js, componente2.js
Abraços e bons estudos.