
HTML is the base of the website and CSS can make it look better adding it colors and some kind of interaction with the visitors. A link in the website menu or just another item that is changing the color when you are there (on that web page in cases of links or a div or a text when you are moving your cursor over it) looks better, right? A designer (not a programmer because they are not programming languages) can use both HTML and CSS to build websites that look great but a programmer can generate the HTML on server-side (back-end) using a programming language like PHP, Python or Java and that person can also use Javascript in the front-end to make the web pages even more interactive for the visitor.
For example, if I would create a contact page you to send message for me, for example, I will use PHP to generate the HTML code adding the CSS later. When you are sending the message the fields canand should be checked: the name, the email or the phone number and the content of the message should be there. Nobody would like to get blank messages for bots, right? That check can be done on server (back-end) using PHP or on client side (front-end) using Javascript. The end result is clear but one person is doing back-end development, one person is doing front-end development, and other person is doing them both.