Как лучше, отдельный файл или тег script?
Зависит от задачи. Если этот JS надо выполнить до загрузки остальных скриптов и элементов (например нужно создать для старых версий IE, какие-то html5 элементы), либо если скрипт совсем маленький, тогда лучше в head. Если это нечто большое и страница спокойно может отобразиться (не путать с работоспособностью) без этого скрипта, тогда в отдельный файл и загружать этот файл вконце документа перед тегом 
Иногда лучше разделять документ программу и оформление 
Иногда лучше помещать программу и оформление в голову документа - тогда все веб приложение будет в одном файле без зависимости от внешних файлов