Since I feel like a beginner (compared to DPP and Amber) I might explain it to a beginner in a beginners language:
First, anonymous function (or code block/lambda expression) is simply a function that does not have a name. It could be tied to a variable like this.
scala> val foo = (x: Int) => 2*x
foo: (Int) => Int = <function1>
scala> val bar = foo
bar: (Int) => Int = <function1>
scala> bar(5)
res2: Int = 10
You see, the function doesn't have the name foo, it could be called from bar instead.
Second, a closure is an anonymous function that has a variable that is not defined inside the function (the variable/value must have been declared before the function is defined). The term "full powered closure" might refer to this functionality.
scala> var constant = 7
constant: Int = 7
scala> val foo = (x: Int) => 2*x + constant
foo: (Int) => Int = <function1>
scala> foo(5)
res3: Int = 17
scala> constant = 6
constant: Int = 6
scala> foo(5)
res4: Int = 16
First time you see this, you might wonder what it is good for. In short, it has many sectors of application :-)