My understanding (which I hope will be corrected if I am wrong), is that the app declares which "Intent"s it can handle via these filters. Let's take the GOS PDF Viewer as an example... in the Manifest there are 2 filters declared, one for Android's MAIN and the other for VIEW. I don't know about MAIN, but VIEW is used when other apps pass off the viewing of some data to another app. In this case, it's data with the PDF MIME type. The other app creates an Intent, specifying VIEW as the type/name, with the MIME type, and no doubt a location as to where this data can be found. It fires off the Intent and Android checks the apps to see which ones can handle such a thing. This is the point where you are offered a list of suitable apps, and the PDF Viewer app would be included an option for viewing the PDF file.
This is with a standard Android Intent but I believe apps can simply declare their own (e.g. org.tranceseven.intent.GRAB_DATA) and if another app uses that Intent, then the data can be passed from one to another.