Like Erik, I write a lot of my own ASM for hacks. But there are a good number of patches that I pretty much always use:
100 Exits (for full-length hacks)
The hex edits that remap overworld levels 101-13B to 25-5F. It's simple and technically pointless, but I prefer it for organization.
Better Powerdown, if I'm not using a custom health system
Item Block Priority Mask
A dynamic sprite patch (I've been using dsx, but I could probably use Dynamic Z or Dynamic X)
Player 8x8 tile DMA patch — INCREDIBLY useful for freeing up more sprite graphics space
No More Sprite Tile Limits, naturally. Though I have found that it's not a panacea; the system that it uses is pretty slow and could be a lot better, so nowadays, if it isn't actually required for a particular level, I'll just use one of the other sprite memory settings. I also have a patch that I made that implements custom sprite memory settings, allowing for things like every slot having 8 tiles allotted or having different reserved slots.
Some sort of status bar patch; I almost never use the vanilla one, and often, I won't have one at all, or it will be made out of sprites. It makes Layer 3 stuff much easier.
Patches for all of my hex edits, bug fixes, and small hijacks that don't seem worth their own patch
More Control, just because it makes cheat codes simpler to implement
Shared subroutines (not the one in the section, though; it's probably outdated, and I tend to use a lot of custom routines)
The DMA queue patch
Fixed Color Data NMI Optimizer, because why not
Reprogrammed Vertical Scroll
ObjecTool
Some sort of message patch; my favorite is
VWF Dialogues, but
b4vwf is also decent (provided that you prevent it from overwriting tile FC)
Some sort of checkpoint patch; the one that I commonly use now is sort of a hybrid of Kaijyuu's and mine
The ones that I would consider essential are the player 8x8 tile DMA, NMSTL, DMA queue, object, and multi-midway patches.
As for other ASM, UberASM is a must, though I've adamantly refused to use any version of the tool older than 2.0; Yet Another Mario Hack was started before v2.0 came out, so it uses the patch version because, frankly, UberASMTool <=1.9 is kind of terrible if you like resources to be shared a lot. I always have some sort of HDMA gradient code, though if I make another hack, I might try a different implementation. MarioFanGamer's Interaction Line patch is decently useful, though it's never made it out of beta. I also always use my spriteset system; now that I've experienced the usefulness and flexibility of it, I can never go back to the vanilla one. Sprites that I pretty much include in every hack include custom platforms, Piranha Plants, custom Bros, Shysters, Goombas (SMB1/3-style rather than SMW), Biddybuds, at least one of Firebars and Roto-Discs, Pansers, and custom bosses.
There are lots of other ASM resources that I've used a lot, but these are some of the highlights.
Some ASM resources that I'd
like to try but have not yet succeeded in using include BG modes other than 1 (the Easy Mode 7 patch exists, but it's still not
that easy), Callisto (I've never tried it, but it might be worth a look), yoshifanatic's Overworld Revolution, and alternate player abilities like the Yoshi player patch. And, you know what, the SA-1. Yes, I've still never made a hack that uses it. Nowadays, I have additional disincentive to use it because one of my friends likes to play hacks on console and her flash cart doesn't play nicely with the SA-1.
----------------
I'm working on a hack! Check it out
here. Progress: 64/95 levels.