As far as I understand it, its a big list with random numbers.
Calling it gives you the next number...that's why you need to initialise it with srand() so your starting point in the list is not 1 everytime you run your program.
It should be noted that there's nothing in the C standard (to my knowledge) that requires rand() to be implemented as an LCG. It could just as well be MT19937. It's just that all implementations go with LCG because it's fast, simple, and good enough for all applications that need random numbers but not good random numbers.