you design Front end stuff when you design systems that interact with the the client of your systems. Notice here the word client is quite large but basically means you are working on front end when you are providing an interface to the outside world.
Most website are just front end, that is they provide information to the outside world and most times this information can be stored quite simply as text in HTML files.
You design back end when you need to provide services and encapsulate functionality that your front end will consume. This allows to displace some of the workload from the client (front-end) to the server (back-end). You will do this in instances when you need to coordinate information from different clients that could access your system concurrently. Or if you need to use a central data repository to collate dynamic data, or again if you need some specific security requirements. This list is by no means exhaustive, just quick examples.
so to put it short, Front-end (client) will present information to the outside world. Usually these are humans through some sort of GUI either HTML or otherwise.
Back end will provide means to centralize services for your front-end to use. Using a back-end is not mandatory and is adds complexity to a system, but it allows to manage better the complexity inherent to the system you are trying to build.
For example it is possible to provide a service such as a wiki solely through front end but it will have many limitations that using a back-end to store the data and serve it to the front-end would resolve in a more natural fashion.