Some notes have to be added.
I think most combinations do not make any sense. Also it is not as easy as putting one of a-f together with one of 1-6, there are also some conditions (e.g. node type - PV node or zero-window), context (e.g. are we at the parent or at the child node), type of search (full-width/QS) or maybe other important "primary" parameters.
Also a-f is not complete, you mention staticEval but also the dynamic score of a subtree can be subject of a decision about pruning or reduction.
Items 3 and 6 appear identical to me.
Item 5 "do a nullmove search" is in the wrong group: first you do a nullmove search, and if that fails high (and possibly a verification search fails high as well) then you take your decision - usually "2" (return a value).
Nullmove pruning and a:5 does not match exactly. A typical precondition for trying the null move is staticEval >= beta (so >= instead of >, and no non-zero margin involved).
Items 1 and 2 are almost the same, only with different context. 1 skips a subtree from parent viewpoint while 2 does the same after having already entered the child node. Both imply to assume that the skipped subtree has no impact on the overall search result. For 2 this is only possible by returning a "fail high" score which the parent (through negamax) sees as "that move does not raise alpha for me".
Razoring typically is not a:2, it is more like a:4 (from child node viewpoint) or d:4 (from parent viewpoint), but again with >= resp. <=. Of course margins will differ depending on whether you are at the child node already (so you made the move) or not.
f:1 is typically applied in QS only.
d:1 is futility pruning at the parent node, a:1 at the child node, again with <= resp. >= in both cases.
e:1 would be "move-count based late move pruning" (LMP), I'm not sure whether that exists, it sounds dangerous to me without additional pruning conditions. e:3 is move-count based late move reduction (LMR).
This is certainly not the whole story