Podany przez Ciebie schemat jest bardzo sensowny.
Bez HTML i CSS się po prostu nie obejdzie. Bez JS - owszem, ale jest bardzo użyteczny.
Na backend nadaje się praktycznie każdy dojrzały język. Wynika to ze sposobu działania serwera - ten każde wywołanie strony przekierowywuje do odpowiedniego programu. Np. w przypadku PHP do interpretera PHP. Równie dobrze to może być interpreter Brainfucka. Jednak dobrze by było, żeby dany język posiadał narzędzia (natywne, biblioteki lub frameworki) do komunikacji w standardzie HTTP.
Jeśli chodzi o programowanie backendu, to jest to właściwie zwyczajne programowanie. Natomiast HTML i CSS (szczególnie CSS) to zupełnie inna para kaloszy. HTML to jest są tony książek o standardach, dostępności treści, współpracy z wyszukiwarkami, semantyki itd. CSS to zbiór reguł, ale żadna książka Cię tego nie nauczy. Tylko praktyka. Bardzo często ludzie programujący w czymś w stylu C++, gdy stają do starcia z CSS po prostu odpadają. To jest osobna gałąź nauki.
A właśnie, a propos książek - nie kupuj ich. Szybko się deaktualizują.