You could have multiple engines running on the same DB, but make sure to have only one job-executor running to prevent many optimistic locking exception when executing jobs.
There is a Java API than offers all functionalities toward the engine. The REST-api only offers basic functionality (not full API is covered by that). So it depends on how much you need to use… Whould make sense to centralize your activiti-engine and access it via activiti REST, or perhaps writing your own API (eg. Restlet) on top op the activiti API to offer specific methods to your apps.