A `pop' procedure only removes the first item in a list. It does ONLY that because its only useful for when you dont have the list in your possession (You only have the address for the variable or in some cases the variable name --since we in Autolisp cant really deal in address we have to use variable names). Didnt you notice that you only pass the variable NAME to my procedure and that variable gets redefined...out of scope no less?
The concept is that if you need to modify that list then you would just go get that list and modify it as you need to... We are playing with variable scope not lists. (SET, SETQ, EVAL) not list modifiers (SUBST, MAPCAR, etc.)
If we want to rehash a remove nth procedure we can do that but a `pop' is NOT a remove nth procedure.