There are few things that I would like to clear.

1. Installing Different oracle versions.

Yes you can install two different oracle versions under a same oracle user name. But you might want to keep a note of few other things that you will want to take care of.

When you install the oracle under the Unix system, oracle will create a file with oraInst.loc. This is the file that contain the link information to the real Installer repository. You first would want to rename the file before you start installing. This way you can have the two different repositories with their corresponding installer information.

Secondly, when you set your environment, make sure the ORACLE_BASE is the same as ORACLE_HOME. normally, you point to the .../product/version. So when the installer installs, the installer repository gets created under the corresponding oracle version. Otherwise you might end up jaming the one repository over the other and will endup with problems when you need to do a patch installs and etc.

Thirdly, I would use the listener of the higher version to listen on the system, instead of using two different listeners (too much of hassel to maintain) One other thing here is you cannot run the default listener for two different versions.

If you want to do that then you would want to have the oracle installed under two different oracle users and try running the defaut listers oriented to each versions. But you would want to take care of the file renaming on this case too.

On coming to answer your question to the connectivity, yes you can service different sets of oracle users. Also, user A can have an account on Instance one, and two. The information that he might hold on two different instances will be different, unless it was clustered. If you want give cross access to instances, then you will have to create DB links.

Hope these might help you to clear your questions.

Sam