"compose" on the console allows to type two characters but output a third one.
the problem is that the compose definitions use bytes, both as the two input (that is, you can't define compose in terms of typed keys but only in term of typed symbols) and for the output.
to make it work in UTF-8, which is multibyte (1 to 4 bytes, at least) would require great changes in the way console input is handled, and replace the simple char array currently used by something more complex. It seems there aren't plans to do so (the consensus among kernel devlopers is that console should remain a console, something simple, only used for last ressort; if you actually need unicode then you likely also need bidi, shaping, etc; then it is better to run a graphical terminal (an fullscreen xterm on X11; but there are other possibilities).
So, indeed it doesn't work, and won't work, with multibyte characters on console.
BUT, it still works if you restrict the compose definitions to plain ASCII.
And I also found out that it also works if the output is in iso-8859-1 (that correspond to unicode values up to 0x00ff); for that you can put in some start script a line:
and put in that file the compose definitions you want (be careful to save the file in ISO-8859-1 encoding; and use chars bigger than 0x7f as the output only)
the syntax of such a file is very simple, lines like this:
compose 'somechar' 'somotherchar' to 'desiredoutput'
compose 'a' 'a' to 'å'
compose 'a' 'e' to 'æ'
the apostrophe has to be escaped.
the effect of dead diacritics keys are also defined in that file; for dead_acute + a you define a line like:
compose '\'' 'a' to 'á'
dead_grave uses backtick (`), dead_diaeresis uses doublequote ("), dead_circumflex uses circumflex (^) and dead_tilde uses tilde (~).