Скрипт сработает, когда до него дойдет очередь.
Т.е.
<div id="test"></div>
<script src="/script.js"></script>
<div id="test"></div>
<script>
var script = document.createElement("script");
script.src = '/script.js';
document.getElementsByTagName("head")[0].appendChild(script)
</script>
Эквивалентны.
А если поменять div и script местами, то работать не будет.
2-й способ используется, если вам нужно подзагрузить скрипты, после генерации страницы.
Например у вас интернет магазин на ajax.
Пользователь зашел на главную. Вы загрузили, все что ему нужно для просмотра главной.
Пользователь зашел в корзину. Вы загрузили, что ему нужно.
В итоге главная грузится быстрее, поскольку не нужно грузить лишнее.