With multLocal only the horizontal works. Nothing happens with the vertical. However I think this may be involved with problem 1. This is all of my code:
Quaternion vert = _cameraNode.getLocalRotation().fromAngleAxis( -FastMath.PI/_tank.getTurretElevation() , new Vector3f(1,0,0));
Quaternion hor = _cameraNode.getLocalRotation().fromAngleAxis( FastMath.PI/_tank.getTurretHorizontal() , new Vector3f(0,1,0));
Quaternion both = vert.multLocal( hor );
_cameraNode.setLocalRotation( both );
Vert works alone when that 1 line of code is all I have, but after I add the line where I assign hor. Vert does nothing and only hor works.
You are not doing it correctly, getLocalRotation().fromAngleAxis() does not create a new quaternion so you are modifying the same quaternion as vert, which simply overwrites the vertical rotation. You need to multiply the rotation by a new quaternion.