Think of building a website like building a house, anything ‘physical’ is going to start with HTML. While a lot of this is automatically set up for you in modern CMS’, it is still very important to understand that the basic framework of what you are seeing boils down to a mix of HTML/PHP. Typically, you are not going to be doing a lot of modification(s) with HTML unless you are developing a theme itself in a CMS, but understanding the role it plays is crucial in terms of being able to ‘see’ your website for what it is.
Continuing on with our home-building analogy, CSS is going to provide the color, sizing, scaling, and other subtle touches that you are going to want to implement. Want to move an element like a logo or a text-block? CSS is the answer. Want to add a filter to an image so it’s more subtle/subdued and provides a better background for a given section of your site? CSS again. HTML drops things on to the page, but CSS moves them around. CSS can even remove elements from a page altogether. The utilization of CSS within Joomla or Wordpress can either be done via the page builder you are using (depending on the page builder, of course), but it can also be done by creating custom code and entering it into a CSS editor extension/plugin within the back-end of your site. Discovering the name of a given element is a matter of inspecting the element within your browser, and subsequently targeting it with custom CSS to change according to the code you implement.