It is a characteristic of systems that are able to continue operating in a more or less normal way regardless of failures in any of the parts necessary for its operation.
The way to get this feature varies, and may involve hardware or software solutions. Tolerance is almost always obtained with some backup system, replication, mirroring, redundancy, or something like that, and in general, it also has some kind of monitoring and escalation of actions when there is something wrong. But one way to help is to write code that is robust, that is always prepared for a failure to occur and can do something useful with it. But remember that often tolerance will be given by the infrastructure adopted.
In software solutions it is customary to anticipate the problems and not to let them happen or after having occurred have some way to re-experience or go to another form that delivers the desired result. A simple system that detects errors in the software and gives a solution can already be considered tolerant to failures at some level. We usually only use the term when everything is solved without direct human intervention.
In general this tolerance is somewhat limited and in each situation it is explained in which cases the operation can continue normal. It is obvious that there are always flawed levels and the more tolerant to every type of failure the system needs to be, the more complex it will be, in some cases it can only be tolerant with a lot of replication in parts of the world. In others only having a way to solve if one of the solution software fails another solves the work or gives some useful result anyway.
So the term is often used as marketing when it doesn’t specify the tolerance level.
There are no guarantees that tolerance allows normal operation always, just that it does not stop completely. In some cases delivering the result is not even the intention, just not stop working is already a good goal.
It is important that anything that occurs in the middle of the failure process that can be reversed or that can be contained without contaminating other parts.
Some mechanisms are very sophisticated, complex and expensive.
There are no tools that can do this magically as some might wish. Sure, you can hire some service that gives you something ready, but you’ll never get it without someone’s great effort.
For all this it is complicated to talk about types of failures and specific strategies, each solution takes a form according to each type of system.