What does the @ mean in ls -l?

It indicates the file has extended attributes. You can use the xattr command-line utility to view and modify them:

xattr -l file # lists the names of all xattrs.
xattr -w attr_name attr_value file # sets xattr attr_name to attr_value.
xattr -d attr_name file # deletes xattr attr_name.
xattr -c file # deletes all xattrs.
xattr -h # prints help

In Snow Leopard, at least, you can do this to show more information:

ls -l@

It has extended attributes - See the OSX man page here for more information on ls.