Websites are ultimately built in XHTML and CSS, but these are the visual end of the deal. XHTML has no native facilities for dynamic web sites, so there would be no way to have the site automatically update with the latest questions and answers and do complicated things like sniff out questions that a user might be interested in answering.
Languages like Ruby, Python, PHP, and Perl are high-level programming languages that are used for computational work. These languages have robust facilities for working with the file system or a database, and can generally do so with much fewer lines of code than languages like C++.
When you request a website like Fluther in your browser, you aren’t pulling .html files sitting on the Fluther web server. Fluther uses the Django framework to pull the contents of your page from a database, which it then assembles into an XHTML document and serves it to your browser. What you’re seeing is HTML, but it was assembled on-the-fly with the most up-to-date content at the time of the request.
If you’re learning web design, you likely won’t even need to know how to do any of that. Frameworks like Rails and Django work with template files there are very close to static HTML files that they use to assemble pages. Computer programmers handle the heavy duty programming logic.