NeoForge(1.20.2+) or Forge(1.20.1-) are better for content mods or versions below 1.13.2. Forge usually gets all of the content mods, for example Create has all of it's main updates done for Forge first.
Fabric is good for performance and/or client-sided modpacks. More performance mods are available for Fabric, and Fabric gets updated to newer versions quicker since it's simpler.
Ultimately it comes down to which mods you want to use. Some mods only work on Fabric, some on (Neo)Forge and some of them work using Syntra connector on (Neo)Forge.
Vulkan with VulkanMod
Minecraft(As of 1.21.11) mostly relies on OpenGL, OpenGL doesn't provide the best performance with modern hardware. VulkanMod is a mod that rewrites Minecraft's rendering to use Vulkan instead of OpenGL. This can net a MASSIVE improvement in FPS on newer hardware. BUT a lot of mods will NOT support Vulkan, shaders are not compatible as they're OpenGL specific, and older graphics cards lack Vulkan support.
Sodium, Embeddium and anything that interacts with them are NOT compatible with VulkanMod since Sodium expects the game to use OpenGL, NOT Vulkan.
I'd recommend trying vulkan mod FIRST to see if it even gains you a performance boost. If you decide to use it, then add mods with the knowledge that many of them might not work.
Mods that help with performance. I'd recommend having all of these. This is the only section I'll provide forge Alternatives for since I don't really use forge. Sorry
All loaders(Fabric, Neoforge and Forge)
Ferrite Core -- Memory Usage optimisations. On older versions(1.19.2-) it's less stable but I highly recommend it on 1.20.1 and above.
Modern Fix -- Applies a bunch of client-sided fixes and helps with performance
More Culling -- Adds more options for culling(Prevents things you can't see from taking up rendering time)
Sodium -- Optimises Clientside stuff. As of Sodium 6.X, Sodium works on both fabric and forge.
Embeddium -- A fork of Sodium, it has both Forge and Fabric builds. On 1.20.1, Embeddium should probably be used over Sodium since it was updated for longer.
Sodium Extra -- Extra options for sodium(Works with Embeddium on Fabric)
Fabric
Reeses Sodium Options/ -- Allows you to access said options, Only required for Sodium as Embeddium integrates this mod already
Textrues Embeddium Options -- Allows you to access the extra options. Forge alternative to Reeses Sodium Options - This is now included in embeddium
Extra Performance Stuff
Mods that can help with performance but might have incompatibilities or whatever. These are mostly optional
Performance mods from someaddon on CurseForge -- As much as I'm trying to avoid linking to mods on CurseForge, someaddon has some amazing optimization mods for both client and server. I personally use these mods on my own modpacks as often as I can, they usually don't break anything. Below are the ones I use all of the time
Spark -- While not explicitly a performance mod, it has a profiler that can be used to figure out what mods are causing lag
NoMenuBlur -- Disables the blur on some of the menus and adds configuration options for said menus in 1.21+
Immediately Fast -- This mod can help with FPS, supposedly it has incompatibilities with some mods since it does a lot for rendering. I personally haven't seen any mods have incompatibilities with this mod though
Krypton(Fabric) -- Optimises networking stuff, has some incompatibilities with stuff like viafabric(i.e the game will outright crash telling you they're incompatible)
Dash Loader -- Makes the game load really really fast. However some mods are incompatible with this
Distant Horizons -- Allows you to see far past your render distance without causing lag. However this mod only works with some setups and is very very buggy(From personal experience, I've encountered a bunch of memory leaks and out-right system crashes due to DH requiring too much memory when I have 16 gigs of ram, and only the game running with Discord in the background)
Bobby -- Allows for render distances greater than the server's view-distance setting by caching chunks and using the cache. In some ways, this could theroetically help with network issues
Raknetify(Fabric/Spigot) -- A mod/plugin that allows you to join servers with the mod via raknet. This can supposedly help with network instability but I've never tried it
Not Enough Recipe Book(Required on server and Client and EMI+JEI recommended) -- A mod that removes the recipe book from the game, the game stores ALL of your recipes in your NBT which can cause network lag and Minecraft isn't exactly optimised at handling recipes either. Note that if you still want recipes you'll need EMI or JEI
EMI -- EMI is basically Not Enough Items ported to modern versions of Minecraft. For better mod compatibility, you'll probably also want Too Many Recipe Viewers(Faster than JEI) or Just Enough Items. While they technically do the same thing, EMI has more customization options and (in my experience) is lighter than JEI
OptiFine features
OptiFine features ported over to Sodium and Iris
Puzzle -- A mod that adds some OptiFine features, an API and some other things
Animatica -- Support for OptiFine/MCPatcher's animated textures
Random mods I thought I'd mention because I like using them and think they're cool.
Some of these mods also provide alternatives to the Recommendations on what to avoid using and why section
Figura -- A completely client sided mod that allows you to use custom BlockBench player models that can be scripted with Lua. Avatars can be seen by other players that have the mod without the server needing the mod.(Note: I do have a bias for Figura since I've personally made a few commits to the repo and have a fork of it. However I hope that doesn't detract from me recommending it)
As an example, here's 2 gifs of a model I MADE using Blockbench and lua. It even has custom physics and animations(The lag is my gif creator, NOT Figura)
Customizable Player Models -- A client+server sided mod that allows you to use custom models made using it's built-in model editor. It can be easier to use than Figura but Figura provides more customizablity with it's lua support. CPM and Figura can both be installed at the same time but you should only equip models from one of them
Ears - "Ears is a mod that adds ears, snouts, tails, horns, wings, and more to the player.", It uses the blank space in your skin to work which you can setup using it's manipulator. Meaning as long as your skin is setup correctly, anyone with the mod will see your Ears model. If you'd like a chest, you can follow this guide
No Chat Reports -- "This mod strips cryptographic signatures that since 1.19 are attached to every message sent in the chat. Removing them makes it impossible to track and associate your chat messages with your Minecraft and, by extension, Microsoft account." TL;DR: Removes the thing required to allow your chat messages to be reported to Microsoft/Mojang. Note, you might need to disable this on some servers*
ViaFabric/ViaFabricPlus -- A mod that allows you to join servers of different versions. Note that this does a lot of packet manipulation and can be seen as cheating or trigger anticheats on some servers like Hypixel. ViaFabric has less support than ViaFabricPlus but is more stable and updates faster in my experience
Hosting worlds to play with friends
A lot of people use Essential for this, but you can refer to Recommendations On What To Avoid > Essential for reasons why I advise against it.
You can find some alternatives below:
E4MC -- Replacement for Essential's multiplayer. It's serversided and far more lightweight
World Host -- Replacement for Essential's multiplayer. It can be used either serversided or both ends can use it with a friends list system (Note: I haven't tested this mod myself)
Custom Lan -- A mod that adds a bunch of options for hosting a world. It supports tunnelling (Note: I haven't tested this mod myself)
LAN World Plug-n-Play -- A mod that automatically port-forwards your lan world using UPnP (Note: I haven't tested this mod myself)
Playit.gg -- While not a mod, you can publish a singleplayer world/server to port 25565 and use this with a singleplayer world/lan server (Note: I haven't tested this program myself)
ngrok -- While not a mod, you can publish a singleplayer world/server to port 25565 and use this with a singleplayer world/lan server