In terms of mods it depends on if the game already releases with mod support. What that means is usually that the game will either accept raw texture, sounds, scripts etc. files in whatever formats the game understands, and it'll allow those to overwrite the files usually used by the game, or otherwise take them and attach them to new characters or items added to the games by the mod scripts.
Sometimes this requires the players to create mod tools to more easily create and modify the files the game will accept since how mods are handled is usually proprietary, or the game will actually have its own developer released mod tools such as Fallout 3's GECK.
Sometimes games don't natively allow mods but have a dedicated enough userbase that reverse engineers enough code to figure out how to inject mods. Usually this is many, many times more complicated and the extent of possible mods are usually simple replacements of textures or models, and nothing as complex as deeply scripted mods.
Sometimes games are not moddable at all due to being heavily encrypted or the userbase just not being dedicated enough. ENBs are not exactly the same as mods, so you'll often find games that aren't moddable still have mod site entries for ENBs even though you can't replace any textures or anything like that.
I'm not a real modder, so some of this info may be quite vague or not entirely correct, but hopefully that gives a good overview.
To add one more option as well: In even more limited cases, a fanbase is dedicated enough to rewrite the entire game into free software like with OpenRCT2. I don't know if I'd really call this a "mod" per se since it's an entirely new implementation, but the end goal of changing/customizing the gameplay remains the same.
For doom its important to understand the difference between port and mod. Doom has 3 components, the physics engine that is the backbone skeleton of all the games internal code for movement bullet firing and all the functionality. 'Assets' which are the skin of the game, sprite artwork for enemies, walls, skyboxes, entities, pickups, GUI, sound and music. Maps are the flesh and blood, and using a map maker like SLADE can let you make your own a 'mod' can be as simple as a retextured sprite or as extensive as a full asset flip with new sounds and everything. Or a new set of maps.
Most mods don't touch the physics engine though unless its an entirely new game built off dooms engine such as heretic.
Dooms physics game engine was open sourced a very long time ago meaning that the skeleton is free and open source. someone can make a 1 to 1 functional clone of doom if you make your own assets and maps (that's the basis of the Freedoom IWAD project).
Ports are rewrites of the physics game engine either from its original source or completely new. Either to get the game on a console or new computer architecture. The original doom was for DOS, and when everyone moved to windows 95 native DOS comparability was lost and fans had to use inefficent emulation through Dosbox. Thats why source ports exist so that the game engine can run on newer computer hardware natively.Blood is a infamous case where the source code of the original game was lost, the new remaster of it uses a completely different engine and thus its gameplay cannot be 1 to 1 faithful.
Some games are made with modding in mind. Minetest comes to mind as its both a game engine and a playable game meant for users to build their own games. Surge the Rabbit is in the same vein being a 2d sonic clone/platformer engine meant to me nodded.
Some games are a nightmare to mod, Minecraft java edition for instance. Minecraft mods require mod loaders which inefficently tear apart the games code and patch in the mod content in a Frankensteins monster of a game code. Microjang at one point point promised modders an official supported game API but gave them the finger after they realized bedrock edition was where the money is.
Difficulty ranges on a scale then I guess. Easiest are very old games with open source ports that just require some basic image sprite and midi changes. Usually map making is very easy too. The medium is modern open source game engines that are intended for modding in mind. The hardest are locked down AAA games where the devs either ignore the modding community or even actively harm it.
Ah, mojang. I remember when the word going around was they're going to open source Minecraft (now I realize they really meant make it source available, but none of that ever panned out anyway).
Entity model changes are relatively easy, often as simple as replacing texture and model files. This is highly dependent on the tech used to make the game and how it's packaged.
Sound files, similarly, are a file replacement job as long as nothing too funky is involved.
After this, we start to get into larger toolchains. We need tools to decode game data so it can be manipulated, tools to gain access to the game as it starts up or as it runs, and tools to use those tools to create modifications and implement them easily.
Graphics upgrade mods often use directx overrides, such as in SweetFX and Reshade. Sometimes they replace or override existing game files directly.
Bug fixes and additional functionality are where things get really interesting. At first, these are done with hacks done in the form of function overrides that can only be created after analyzing the compiled game executable. Later, tools are built that allow easier access and present game functions to other developers for easy modification.
And sometimes the difficult parts are skipped over entirely when developers include modding APIs or SDKs for public use.