1. Says who?? Whenever a client invokes a method, you can use the context object to get the caller principal. So, that would include home business methods.
2. For BMT, you can do just about whatever you want with the UserTransaction. For CMT, it is more complicated. You should really only use the setRollbackOnly on the context object, but that's about it. I think you can get the UserTransaction, but if you invoke any methods on it, it'll throw an exception.
3. I hope you're referring to the bean's ENC. I suggest you read the J2EE tutorial to get an overview of JNDI in J2EE.