A file system is case-sensitive when it differentiaties uppercase letters from lowercase ones. This means that foo.c is not the same thing as Foo.c and therefore you are allowed to have these two files living in the same directory. While I've lived with case-sensitive file systems for a long time (since I discovered Unix), I haven't yet found any advantages to them except for an easier and faster implementation. In these file systems, detecting a file match is a matter of a raw comparison of the characters you are given agains the ones stored on disc. Examples of case-sensitive file systems include UFS, Ext3, Reiser, etc., while examples of the other set include VFAT, NTFS and HFS+.
On the other hand, case-insensitive file systems can be case-preserving or not. A file system is case preserving if it keeps the case of the file names as they are entered. For example, if you name a file Foo.c, it will appear as such in all listings, not foo.c nor FOO.C. Such file systems include VFAT, NTFS and HFS+. However, if the file system is not case-preserving, it will convert all file names to either uppercase or lowercase. An example is the old FAT, which shows all 8.3 file names in uppercase letters.
I'm sorry for not having posted in more than 20 days, but this university project (PROP, if you must know) is really exhausting me. Not to mention that I've taken the FCE exam today, too...