Oki, skoro Hello World Ci się wyświetla to wszystko jest oki. Problem tkwi nieco w innym miejscu.
To działa tak:
Wpisując w przeglądarce adres, pewnie localhost:3000 wysyłasz żądanie do serwera, gdzie obsługuje to proces np. server.js (ten, gdzie masz kod express). Następnie serwer wysyła odpowiedź, czyli w Twoim wypadku po prostu ciąg znaków "Hello World!" i to dostajesz jak piszesz w przeglądarce - wszystko jest oki.
Ty natomiast musiałbyś wysłać nie ciąg "Hello..." ale zawatość tego pliku html. Możesz spróbować np. Twoje send zamienić na:
res.sendFile('views/site.html', {root: __dirname })
gdzie site.html to będzie właśnie ten twój plik html - tutaj zakładam też, że w folderze views.
Ale generalnie jeśli planujesz bawić się w takie pliki html to polecam poczytać o systemach szablonów do node, na przyład EJS lub dowolny inny.