HTML stands for "HyperText Markup Language". It is a language that allows composing web pages. It is a markup language and not a programming language because the purpose of HTML is to frame the different elements present in a page (images, titles, paragraphs ...) by tags to allow them to be formatted secondarily (via a style sheet) and to give them meaning.
Web pages are composed of raw text, perfectly readable with any text editor, in which we will find the tags.
These tags usually work in pairs, because as we said, they are used to frame an element. There is therefore an opening tag to indicate the beginning of an element and a closing tag to indicate the end.
Let's take for example a paragraph of text. It is the "p" tag that is used to demarcate a paragraph in the middle of a larger text. The opening tag is written as <p> and the closing tag </p>.
You will notice that at the HTML level, there is nothing to say how the text framed by its 2 tags should be presented: should it be bold? Should it be in italics? What are the color and sizes of the letters?
At the beginning of HTML, all this information was contained in the tags. But little by little, as the language evolved, it became clear that it was extremely relevant to separate content and appearance. This makes sense when you browse the same web page on a smartphone, a tablet, or a computer: it's the same content, titles are still titles, paragraphs are still paragraphs, but the graphical appearance can change radically to adapt to the look of the page to its viewing tool.
HTML has therefore been progressively purged of all elements related to the style to be applied, but it has on the other hand gained a lot in semantic elements. These elements (tags or attributes within tags) have made it possible to increase and specify the meaning to be given to each element contained in the page? Is this menu a navigation menu? Is this block of text the main text of the page or a side element? Is this title the main title, a secondary title? Etc. etc.
Today, a good HTML code, a good HTML page is therefore composed of a code that makes the best use of all the HTML tags available and is necessary to make the most precise description possible of the elements contained.
On the other hand, it must not contain anything concerning the style of these elements which are integrated with the style sheet.