As its name implies, Application.ProcessMessages handles all pending messages in the message queue. Messages are mostly GUI related; think mouse clicks/motions, key presses/releases, window/control creation and modification, drawing/painting...
There exists exactly one message queue per process (it is global in the process's scope), and thus all windows inside the process are subject to it. External processes are not affected; in general, messages are handled by the process, while processes themselves are managed by the OS.
Being global means that Application.ProcessMessages can called anywhere in your program, even inside units that don't contain any user-defined forms. However you'll still need to add the Forms unit to the uses clause, since that's where Application is defined.
You also need to make sure that Application.ProcessMessages is only called from the main thread (ThreadID = MainThreadID), but you'll only have to worry about that if you use multithreading in your application.