No, they aren’t variables. They are specific names that mean different things so that the browser can take them and render a page. You can’t just give them arbitrary names, that defeats the point.
Technically you can name them anything you like, but that’s pointless as [normally] the browser will recognise that they aren’t correct, that it doesn’t understand what they are, and turn them into a <div> tag. You can also create new elements using a browser API called Web Components. In that case the have to be named with a hyphen, like <foo-bar>, but that involves a fair amount of work to create them using JavaScript, as you need to define how the element should behave in the browser.