if this is not true how do i store variable names in Lists? can i make local variables?
I'm not quite sure you are understanding variables correctly.
All variables are independent of programs, and can be in RAM or in the Archive. When programs acces these variables, they only reference them, meaning the variable is not stored inside the program.
So in relation to your initial statement, you can use a variable that is also used in an archived program, because while the program itself is archived, the variable may not be. If you are worried about the variables you are using being archived, you can always Unarchive them before you use them. This will not throw an error if they are already archived, but it will if they don't exist.
I'm not sure what you mean when you say 'store variable names in Lists'. what do you mean?