> Dead keys are definitely a feature of the basic xkb based keyboard input, they don't require an IM thing.
Actually, they do, it's just that Xlib's built-in input method supports it. If you want to compose á using a dead key, the user types — and the X server sends — a 'dead_acute' keypress, followed by an 'a' keypress. It's then up to the client to compose this into á, much the same way it does for Compose+a+'. You can check this by looking at /usr/share/X11/locale/en_US.UTF-8/Compose for the built-in X Input Method:
<dead_acute> <a> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE
Broadly speaking, anything which involves multiple keypresses turning into one, is an input method feature.