I recently picked up The LaTeX Companion, 2nd Edition. It’s… dense. It shows a lot of amazing things LaTeX can do, but also highlights its weaknesses.
Most of these weaknesses have to do with the legacy of TeX itself. For example, it’s difficult to flow text around objects, because TeX determines line widths before it lays out the page. There’s a package to work around this, but it’s an imperfect hack.
The font encoding schemes are a nightmare. TeX was born in a 7-bit world, so Knuth’s Computer Modern fonts stuck the mathematical and typographic symbols in wherever they fit. Then the Europeans created an 8-bit TeX, before the ISO-8859-* encodings were standardized. To make all this work with new fonts, different people have defined packages to map all the different LaTeX symbols onto, usually, collections of two or three fonts. Standard LaTeX still does not fully support Unicode, although some alternate implementations do.
TeX still produces better-looking output than any other formatting system. But it’s a chore to work with, even for nuts like me who enjoy delving into the technical/mathematical details of typography. The syntax is well-nigh incomprehensible, and the error messages are about as user-friendly as a kernel panic.
I’d love to have TeX as a low-level service to which other applications — word processors, even a web browser — could delegate their text formatting. There is a TeX daemon, but I’m not aware of any desktop applications that use it.