There are a number of common filenames and filetypes that you may run across. Those who want to work on projects that are part of Gnome will probably run into more of these files than those who write their own programs, but this section should serve as a helpful reference for both groups.
autogen.sh
In order to make packages versatile enough to use shared libraries, handle internalization capabilities, be portable, and fulfill other requirements, there are many outside programs employed. autogen.sh is a simple script that runs these various outside programs such as autoconf, automake, libtool, and gettext. It will also run configure (which is created when autogen.sh runs autoconf) after it is done, so any arguments that are normally passed to configure can be passed to autogen.sh. autogen.sh is run before packaging tarballs, so one only needs to run it when compiling from CVS.
*.bz2
.bz2 files are files that have been compressed by the bzip2 program. bzip2 is not as common as gzip, since it came later than gzip, but it tends compress files better.
configure
configure is a script generated by autoconf which adapts a package to platform-specific features.
configure.ac/configure.in
configure.ac is the input to autoconf used to produce the configure script. It is basically a shell script that contains M4 macros. configure.ac has replaced configure.in because the latter name was confusing (configure.in implied that it was an input file to be processed by configure, rather than an input file used to generate configure itself).
*.desktop
.desktop files are simple data files that provide information about items in menus. They contain information such as the name of the application, what command to execute, an icon, special conditions to run the application under (inside a terminal, using startup notification, etc.), and so forth.
*.gz
.gz files are files that have been compressed by the gzip (Gnu zip) program.
*.in
.in files are files that are meant to be processed by configure.
*.lo
.lo files are library objects created by libtool, which may be used to build a shared library.
*.m4
.m4 files are scripts that run under the M4 macro preprocessor.
Makefile*
A makefile (almost always named Makefile) is a file that contains a description of what to build and how to build it. They can be easily constructed by hand for simple cases. However, they are often generated for more complicated build environments for greater flexibility and portability. Makefile.am files contain a high level specification of what needs to be built. automake processes these files and creates makefile templates named Makefile.in. configure then processes these templates and generates the final makefiles that contain system-dependent information.
*.spec
.spec files contain instructions on building RPMs from tarballs. RPMs are the most common way to distribute packages for Linux.
*.tar
.tar files are archives of several files. They are similar to .zip files (which can be created with PKZIP or WinZip under Windows, or zip under Unix), except that .tar files are uncompressed. Since they are uncompressed, it is more common to see .tar.gz or .tar.bz2 files. The files are known as tarballs, and are the most common way to distribute source code.
*.xml
.xml files are files written in XML (Extensible Markup Language) format. XML files are becoming very widespread and are used for configuration files, documentation, saved data for programs (e.g. the Dia diagram editor and OpenOffice.org office suite both save in XML format, though Dia compresses the saved file with gzip), and many other things.