Edit: The full extent of advice I could find in other questions was 'use Sandcastle'. As far as I can tell from its (ironically limited) documentation, it can only create Windows help files (.chm). Is that correct?
No, that's not correct. Sandcastle can build a wide range of output.
However, these days you really want Sandcastle Help-File Builder (SHFB) which makes things a whole lot better. Still not entirely painless, but pretty good. The documentation for SHFB is generally pretty reasonable, too.
Funny you should give an example of Noda Time - SHFB is precisely what we use to generate our online API reference.