It's, as Brad writes, basically a replacement for the "grep" search tool.
One of the big features (that I don't care all that much for) is that the output tries to be more helpful than the usual grep output. My habit is to grep for something and pipe it to "less" and then do more searches with that tool, so ack isn't too helpful there.
However, I do use ack all the time because of another major feature: it automatically ignores files I don't care about (files in .svn directories, binary files etc)! Brilliant. No more long command lines (or extra scripts) to filter those out.
It does it by file extension (for speed) and it could use a few more added (Andy will take patches, I am sure) for .css files for example.