Modding is something that is easy depending on language, but more how the developer designs his game.
Minecraft for example is actually decompiled, and then the necessary modifications are added by copying new files to the jar. Things like the ModLoader or Bukkit for MC make modding not only easier, but also allow for mods to be run without actually modding the files, but instead being loaded at game load.
Generally mods are implemented using Hooks, and a set of functions are given to you (the API). You can "tap into" the Hooks and have your own peice of code run. E.G, there is a OnJoin hook, with all the information about the player joining being passed to it. You as a modder can "tap into" it, and using the given API functions, do stuff when a player Joins.
As far as your question goes...
If the developers of the game give modders an API to work with, then modding is possible. Generally mods would be placed in a folder and run at game load.
If they do not, modding can still be done, but generally the game would be decompiled by another team, an API will be added over the top of the code, and that will make modding possible.
As far as actually making the mods go. You would have documentation on what language they allow; C# or Java, or scripting languages like Lua. And then using the given functions, you create your mod from that.