Learn basic CFrame manipulation for transforming the camera CFrame and the rig you want to show in first person. Look up useful functions for simulating movement in 3d space (Lissajous curves, etc.). Become intimately familiar with the RunService and when to run your functions (i.e. camera manipulation at the camera value in RenderStepped, motor transforms in Stepped, and everything else in Heartbeat). Figure out how to use springs and how to apply them to achieving smooth transitions between states and simulating impulses (recoil, etc.)
There are plenty of really nice tutorials out there too like this one by BlackShibe, so look for those as welll!
If you just want to move the gun, then the topic above mine summarizes everything pretty well. If not, then I suppose that you could attach the gun to your player character and then rig the gun instead of using CFrames. Animate the rigged gun. This might also give you free control and not have to worry about the gun too much. But picking up the gun (Like in karlson) would require CFrames.
Well for movement when the player slides you can increase the humanoid walk speed and play an animation while the player slides. When the player is going fast you need to add the white effects. Wall jumping is going to be difficult.