I was working on a project when general upgrade instability caused it to stop working on my development machine (read: starting OpenGL kills X for some reason). Off of Arch and onto Ubuntu 9.04, and I find that my Linux-based project won't build under Linux.
Autoconf is a set of tools that smooths over differences in build environments, like different file system conventions, library names, search paths, tool chains, and so on.
The following is based on a series of long articles over at the Free Software Magazine: the only tutorial/guide that didn't attempt to shove 20 years of history down my throat from the get-go. It's my personal reference and I'll update it as I learn.
configure.ac is where all the major info goes: project name, version, plus source files, headers and libraries.
Makefile.am is a script holding the automake rules that define things like the project binaries and dependent source files.
Setting configure.ac to use automake and running autoconf will spit out a configure script. This is the first part of the familiar "./configure && make && make install" trio. The configure script detects the current system features, dumps its results into a config.status script, and then invokes that to spit out processed Makefiles.
The Makefiles can then be used to build the project. It has all those fancy OSS Makefile targets too, like 'all', 'dist', and 'distcheck'.
This thing is massive and it's clear that its growth was very... organic. I'm in no position to provide any more advice than what's already up here, at least for now.
I've decided that I won't go further into this until absolutely necessary. Hopefully never. I'm not learning anything from this that I could transfer to any other conceivable activity I may partake in in the future.