• To the best of my knowledge, the position_controllers/JointTrajectoryController is an open-loop controller so it will simply forward the commands (without doing any corrections).
• velocity_controllers/JointTrajectoryController will give you velocity as an output which you can forward to your motors. You can tune the PID gains to get the required performance. You can also use pos_vel_controllers or pos_vel_acc_controllers/JointTrajectoryController with pos_vel or pos_vel_acc interface respectively.
• In general, JointTrajectoryController can work with different trajectory representations so, based on what information you provide out of pos, vel an acc in your waypoints, the degree of spline interpolation will be chosen. (http://wiki.ros.org/joint_trajectory_controller#Trajectory_representation)
Just a side note, you can also check the state topic published by the JointTrajectoryController and maybe use it to visualise the error with rqt_plot. (http://wiki.ros.org/joint_trajectory_controller#Published_Topics)