I haven’t worked with BGE so far, but I’ll try to explain how you could approach this in general. This is just the idea, not a tutorial. I’m mainly an artist with limited coding experience though, so keep that in mind. There are most likely much better solutions.
Regarding the movement:
To be able to smoothly stop, you have to know how fast the player was before stopping. Not just the speed in general, but a vector3. Let’s call this your velocity. When you stop pushing the movement button, you want the game to still feed the last velocity vector into your movement while decreasing the vector length simultaneously to 0 over a short time.
Let’s say you’re running forward and slightly right, so your movement vector could look like this (200 400 0).
After a short delay it looks like this (100 200 0) until it finally arrives at (0 0 0).
Regarding the rocket jump:
You don’t need rigid bodies for this. At the time a rocket explodes, get all objects inside the rocket’s splash damage radius. First you should check if the splash damage is even relevant to them. Level geometry does not need to be informed about explosions. But players should be. Inside the player’s logic could be a function for physics explosions. So when a rocket explodes, it informs players inside the splash radius that a) they are inside the radius and b) how far they are away from the explosion center.
You can get distances between two objects with a very simple formula: get the vector3 position of your target (the player), subtract the vector3 position of your start (the rocket’s position) and get the length of that vector. That’s the distance.
The larger the distance, the smaller the applied force should be (because you are farther away from the explosion center). You also want to push your player away frow the rocket, so you need to know which direction that is. The formula is almost the same as the previous one: target - start, and this value normalized.
So you use the player’s position minus the rocket’s position and normalize that vector so it doesn’t exceed a length of 1.
Now that you know the direction from explosion to player and the distance between the two, you can add a physics impulse to you player with the direction you calculated and an intensity that’s stronger the closer you are to the center. This could work like this:
direction * 1/distance * intensityFactor
You can define the intensityFactor yourself. This just scales up how much you are pushed away. I used 1/distance so the value gets bigger when you are closer to the rocket and smaller when you are farther away.