Naja, was ist der Sinn einer Scriptsprache. Usern es zu ermöglichen, ohne großen Aufwand selbst Funktionen, oder ähnliche Dinge zu erstellen / aufzurufen. Beispielsweise die Scriptsprache in CS 1.6
bind "Taste" "Funktion"
Dafür gibts einen bestimmten Teil im Spiel, der genau diese Scriptsprache interpretiert und dann eben eine Taste mit einer Funktion belegt. Das selbe macht auch Lua. Man kann diese Sprache in allerlei Programme einbauen, bedeutet, dass nicht nur in Games diese Sprache verwendet werden kann!
Beispielsweise um einer Waffe einen Sound zu geben, wenn man sie wegsteckt:
self.Weapon:EmitSound("SOUNDFILE)
Garry musste Lua auch erst sagen, dass bei EmitSound ein Sound abgespielt werden soll, der eben für diese Waffe gilt, wobei Dinge wie "self" das selbe wie in JavaScript "this" ist. Solche Dinge sind also bereits in der Sprache vorhanden. Genauso wie diverse Schleifen, oder Abfragen (if...then...end). Anderes Beispiel wäre sowas:
SWEP.Primary.Delay = WERT
Sweps sind eben die Waffen, wofür das nun genau stand kann ich nimmer sagen
Primary musste auch erst festgelegt werden, dass dies eben die Schussfunktion auf Mouse2 ist und bei Delay genau das selbe, wobei dies sogar schon in Lua vorhanden gewesen sein könnte.
Wenn man so will, kann man Lua auch in ein normales Programm einbauen. Beispielsweise ein Programm zum erstellen von Bildern. Wenn dort Lua ebenfalls integriert wurde, könnte man somit weitere Funktionen oder wie in Photoshop weitere Filter hinzugefügt werden etc...
Einfach mal den Artikel auf Wiki + die Links anschauen.