[eluser]Mirage[/eluser]
1. You do this by defining multiple database groups in the db config or by using specific DSNs when connecting to a DB in a class or function.
2. Whether it's ok for one app to alter the db of another app, depends entirely on your problem, goals and application design. In general there's nothing wrong with it. There are probably more than a few CI driven sites out there that interact directly with the db of e-commerce solutions, etc.
A better approach in some circumstances would probably be for the app that primarily controls the database to offer an API to other apps by which they can modify the database. But it's definitely more coding work and might be overkill depending on the needs.
HTH
-m