1. Generally, yes. Each time you launch a JBoss server (like via run.sh), it launches a new JVM, which is an 'instance' of JBoss.
2. You generally don't deploy separate apps like this. 'all', 'default', et al are server configurations. An 'instance' runs one and only one of these configs, and are started like 'run.sh {-c all|default|minimal|whatever}'. Use all if you want clustering; default generally fits the bill if not.
Install your apps under a single config's deploy directory (like /usr/local/jboss/server/default/deploy) and run one instance (like run.sh with no args). There is generally no need to run separate instances of each server config (all + default).
Generally, you need multiple instances on a single box to:
1) Test clustering
2) Run dev and test or (gasp) test and prod on a single environment.
Hopefully that helps clear things up.
mike