Nil is short for non-initialized value, meaning its just an empty value. This means that if you expect a value and it isn't there, then it will be nil.
If a table index cannot be found, then nil will be returned.
If a variable doesn't exist, then nil will be returned.
In actuality, nil is only returned in two instances. This is when and index from a table doesn't exist and if a function returns nil. What about variables? Well really that's the same as indexing from the environment which is a table. What about assigning nil to a variable? You cannot initialize a non-initialized value. Take a look.
Is there any real change?
See, nothing changed, nothing was initialized, the variable stayed the same.