First of all, make sure your tentacle's rotation point is set to where you want it to rotate around. Then, adjust the tentacle's offset (the first 3 parameters of ModelRenderer's constructor) so that the tentacle appears where you actually want it to. At this point, it should be able to rotate about it's origin correctly.
So how do we make it actually rotate? In the .setRotationAngles method, use Leg.rotateAngleX, Leg.rotateAngleY, and Leg.rotateAngleZ to change it's orientation about the x, y, and z axis respectively. If you just want it to move as the octopus is moving (in a similar manner as biped legs do), take a look at ModelBiped.java.
"f1" is the entity's velocity as of this render frame, whereas "f" is the total distance the entity has moved as of this render frame. We run the total distance moved through the Cosine function and achieve a nice leggy movement, but multiply the effects of it by the velocity so the legs revert to their normal position when standing still (and go crazy when moving super fast.)
If your octopus moves in spurts, I'd just figure out 1) the tentacles' rotation when at a stand still, and 2) the tentacles rotation at the maximum velocity during its spurt, then set each rotateAngle as the weighted average of the two rotations, where the weight is the velocity.
Btw, the weighted average of A and B with weight F would be calculated "A + (B-A)*F". Think of F as the throttle on the transition between A and B.
Hope this helps!
EDIT: I should mention that the angles are all in radians