IL is a language for writing kernels, while CAL is the frontend API for compiling and running IL kernels as well as creating streams.
CAL is used to compile IL kernels, link them and create binaries. It's not so much a hardware driver as it is an API for building and running kernels.
Using CAL, you can accelerate applications which map well to the streaming model. However, I would recommend you use Brook+ if you're just beginning, as it's much easier to get things running.