MDN Reference

HTML

Included on this page is an introduction to HTML. Included is a brief explanation of the title 'HTML', which is short for HyperText Markup Language. There's also an introduction to elements and a list of quite a number of HTML elements with links to an explanation and examples of each listed element. There's also several resources provided that bring the user to tutorials and introductions to HTML if they're new or needing help in certain areas. There are resources for both new and more advanced users looking to improve on what they already know.

CSS

Like with the HTML page mentioned above, the CSS page begins with an introduction and brief explanation of what CSS is and what it's used for. There are several resources to help the user learn more about CSS from beginner to more advanced. Also provided are some tools for CSS development.

DOM

The DOM (Document Object Model) is a programming interface for web documents. It's job is to provide things for programming languages like JavaScript to cling on to and make the changes it's programmed to make. Essentially, the DOM is a way for the page to allow interactions between the structure and behavior, as well as providing a way to manipulate the page.

JavaScript

JavaScript is a run-time programming language, meaning it is compiled at run-time and not beforehand by a compiler. JavaScript is created intentionally similar to C++ and Java (as far as function goes) in order to dampen the learning curve necessary when beginning with JS. JavaScript's main use is for controlling the behavior or web pages and web apps. It is the most widely used scripting language, being used in 97% of all domains (including through third-party libraries).

Summary

In short, all the above work together in harmony to build websites and make them behave as they should, with the DOM being there to help developers and/or users understand how the page is working and what is going on in the background. While websites can function if one or most of these pieces are missing (except HTML, that, of course, is required), it's imperative for any web developer to make sure each of these pieces works fluid and flawlessly for a good UX to be had.