Olá Ivanildo,
sobre suas dúvidas:
1 - Quando você carrega a página o fato de carregar os javascripts e processa-los ocasiona uma lentidão, pois a página fica aguardando enquanto isso ocorre, portanto é uma boa idéia deixar toda a tela carregar antes de trazer os .js, outro motivo é o fato em casos como o do calcula-imcs onde você executa o seguinte código:
var botao = document.getElementById("calcula-imcs");
Se o elemento com o Id "calcula-icms" ainda não tiver sido processado pelo browser o javascript não vai encontrá-lo, ocasionando erros, ou simplesmento o eventos podem não ser criados.
2 - Para chamar o click do botão, basta simplesmente invocar o método click do mesmo, assim:
botao.click();
Repare nos parênteses utilizados para chamar a função click.
3 - Para manter o estado da página carregado seria necessário você armazenar os dados em algum lugar e inicializar os dados na tela mesmo.
Ou como é somente um exemplo, criar os arquivo html com os dados preenchidos.
Porém em um ambiente de produção, onde estariam dados de clientes, você precisaria de um banco de dados ou similar para armazenar as informações.
4 - As próprias IDEs auxiliam nisso ( até onde elas conseguem, pois nem sempre é fácil saber qual o tipo de dado de uma variável Javascript, rsrs ), o próprio Eclipse, Netbeans, Idea te auxiliam com isso, muitas vezes até tem plugins para ajudar, porém tem editores de texto com suporte parcial ao auxilio de código como o Brackets e Atom. Uma opção interessante (porém não é grátis) é o WebStorm, uma IDE para Javascript da Jetbrains, assim como IDEs na nuvem.
Bons estudos.