The ARM C libraries support multithreading, for example, where you are using a Real-Time Operating System (RTOS). In this context, the following definitions are used:
Mean multiple streams of execution sharing global data between them.
Means a collection of all the threads that share a particular set of global data.
If there are multiple processes on a machine, they can be entirely separate and do not share any data (except under unusual circumstances). Each process might be a single-threaded process or might be divided into multiple threads.
Where you have single-threaded processes, there is only one flow of control. In multithreaded applications, however, several flows of control might try to access the same functions, and the same resources, concurrently. To protect the integrity of resources, any code you write for multithreaded applications must be reentrant and thread-safe.
Reentrancy and thread safety are both related to the way functions in a multithreaded application handle resources.