I recently discovered dia, a little program for drawing diagrams of a bunch of different types. I found it while trying out Ubuntu linux, but it also works on Windows.
I really like Dia, it doesn’t do as much as Visio or even SmartDraw, but I don’t even want or need the features they have. Dia is just simple, easy, small and doesn’t get in your way. It does have the slightly weird Gimp-style interface that uses separate “main” and “workspace” windows, but that doesn’t take long to get used to.
Dia supports a bunch of different diagram types at the moment, and I’m sure more will be added. You can join objects with straight or bezier curved lines, with or without arrows. The objects have those little connection points that the joining lines snap onto, so that you can move objects and the lines stay connected.
I wish this was around when I was back at uni drawing so many ER diagrams, Use Case diagrams, Data Flow diagrams — oh the pain.