This is a tough question to answer, cause it really depends on the actual game. Usually there are many tricks involved to make a game feel responsive. The classic Mario games on consoles are often considered still being some of the best platformers due to awesome controls and responsiveness. They've got their own issues, but there are many things you can learn just by looking at them for a bit.
Here are some things to notice:
- Players are able to control their character any time. They can quickly try to change direction no matter where they are (even mid-jump). There are other platformers that don't allow you to steer while in the air, which is usually considered very bad and unresponsive.
- When trying to jump, the game allows you to do so even if you just ran off a cliff (just for a few milliseconds). This makes last-minute-jumps a lot easier and also avoids the game feeling like it didn't respond to your button press.
- The jump button usually considers how long you hold down the button, so the player has more control over the character (i.e. it's not just binary jump yes/no). Tap the button and you make a small hop, hold it down and you jump far further.
However, with networked games appearing over the last 15-20 years another problem surfaced when talking about responsiveness: Network latency. In theory you can write a simple client/server game, where you're sending your inputs to the server and the server will tell the client what to display. This will work rather well in a LAN, but it will feel very sluggish when played over the Internet. Imagine pressing the jump key, it takes 200 ms for your command to reach the server and another 200 ms for the result to be visible on your PC. We're suddenly talking about almost half a second delay, which will be noticeable. Due to such issues game clients usually allow the local client to immediately apply movement or actions and then compare that to the results sent back by the server. If the results don't match and there are significant corrections to be made, you'll get the effect often called "rubberbanding", which usually is not desired and makes a game feel very unresponsive (i.e. you're never able to move how/where you want).
Another possible reason for unresponsive gameplay can be low framerates, i.e. the game isn't able to react in time, simply due to you not seeing everything happen in time. This can also be a Timing issue, e.g. when your game logic is tied to your framerate even small slowdowns (like from 60 fps to 40 fps) will be noticeable, cause the game will run much slower at once.
And one last source for unresponsive or sluggish gameplay I can think of: Delays caused by calculations. For example, in an RTS game, you'll want to see your units move immediately when you issue a command. Due to pathfinding this might be delayed a bit, even if it's just one or two seconds, this can cause a bad experience (e.g. seeing the units being destroyed just due to moving too slow). To counter something like this, you can make rough guesses, e.g. let the unit start moving in the direction of the last known path or the new target position.