I'm looking for programs/projects that are small to moderate size that show good modern practices for developing applications in C on Linux. I'd like to learn by example and curious how things are done out in the real world.
My advice is go for huge. Good practices almost don't count on small projects, and what would be good practices for a big project mainly piss you off on a one-man tiny one.
A great book that is simply a joy to read. Even if you aren't a *nix programmer or a C programmer, the examples and case studies are great.
Be wary of some larger projects. They can be a mish-mash of legacy code and other craziness. For example: don't look at the Mozilla/Firefox code base as an example, it's a huge mess (slowly getting better though).
The XMMS2 codebase is fairly young and is a good example for coding style as well as techniques to use C in a modern, yet very clean (it has to build on a lot of platforms) fashion.
It includes a client-server model with cross-platform communication, an object oriented system inside the server, a sophisticated plugin system, threading to fullfill the realtime need of feeding the soundcard. The plugins also give good examples of incorporating third-party libraries. Complimented with an exported API for which also several language bindings are available (which shows you how to do it).
You will see many different modern day issues covered within the xmms2 code. The code base is very clean and comes with little "old code" here and there, which is still written well.
It also uses a sophisticated build system and the developers heavily rely on git's features. So there is even more to learn than just the plain code itself. The community is active and helpful on IRC, if you have any questions about the code.
Drawback: It is not small. But it is relatively modular, especially with the server components being distinct objects, so you could pick a part of it which covers specific issues and learn from that. Or even try to write your own client, plugin, whatever.