The fundamental concepts is physics and acceleration.
As long as you can apply a velocity and increase it via an acceleration you can get smooth movement.
Here is a list of projects I used to learn custom movement from the devforum.
As for learning how to piece it together you start out small step by step.
For example learning how to apply acceleration you could use vector force.
However then it will accelerate infinitely so you then you add a drag force.
However then …more problems come up…solve em until you get the end result.