It means the positional argument that mx.nd.squeeze expects is a variable argument.
Moreover, it expects the list to be passed as reference i.e. *data instead of pass by value data
Correct way is
data = [mx.nd.random.uniform(low=-10.0, high=10.0, shape=(2,2,1))]
mx.nd.squeeze(*data,axis=0)
Actually, this usage of * has nothing to do with value or reference in Python.
The problem you had was because data is a list of NDArrays and mx.nd .random.uniform expects an NDArray.
By using *data as an argument, you are unpacking the argument list. Think it as a syntactic sugar, where func(*[x0,x1,...,xn]) is converted into func(x0,x1,...,xn).