The important difference is that a closure captures the scope it was defined in.
In other words, a closure may access variables and their state even though they belong to the closure's parent scope (e.g. the function the closure was created in). This allows closures to capture and "transport" application state around your program.
An anonymous function cannot do that; its reach is limited to variables defined inside its body and signature (i.e., its parameters).
EDIT: Just to clarify: In JavaScript it is especially unclear since there is no language construct called closure. You'd still use an anonymous function for that. I was only referring to the conceptual difference.