Это правильно. head = new(struct node);
использует оператор присвоения и защищает вас на одну строку по сравнению с
node *new_node = new node;
head = new_node;
.
Я не уверен, но я думаю, что современные компиляторы даже оптимизируют оба ввода для одного и того же кода сборки, но вам следует использовать head = new(struct node);
, потому что он более читабелен.