The protocol docs used to say to POST to /cgi-bin/log.cgi, so that's what I use. But I just noticed that they now say to post to /interface/flat. Does it make a difference?
Those URLs are effectively identical (one maps to the other), but /interface/flat is the newer, more official one. Because Brad tries to never break backwards compatibility, /cgi-bin/log.cgi should stay around, but you should use /interface/flat to be more "correct".
Just saw that there's an XML-RPC interface to LJ. Does it support anything that the regular protocol doesn't, or does the server just translate it into the regular protocol first?
The latter. Both protocols have equivalent functionality (internally, they're both just wrappers around the same code). I'm not sure if anyone has written anything that uses the XML-RPC interface (the flat protocol is so simple that it's about as hard to use it as it is an XML-RPC library) so I can't vouch for its bug-free-ness, but there it is.
(Update: Currently you can find XML-RPC documentation at http://www.livejournal.com/doc/hack/ .)