It appears that you have not fully grasped the meaning of the CALL command. When cmd.exe is running a batch file and it comes to a CALL command, it leaves the first batch file and starts the second one. When (if!) the second one reaches an exit point, control is passed back to the first batch file, at the line immediately following the CALL command. Your error lies in using, in pconfig.bat, following a correct password entry, the CALL command to get back to main.bat. That doesn't happen. You are starting a new copy of main.bat from the beginning. What you are doing is setting up an infinite series of CALLs.
main.bat
calls pconfig.bat
calls main.bat
calls pconfig.bat
calls main.bat
(etc until you run out of memory and/or patience)
What you need to do is merely exit from pconfig.bat if (and only if) the password is successfully entered. Then main.bat picks up again. You don't need to direct the second batch back home, cmd.exe knows where to go because it remembers where it was CALLed from. Also, I eliminated the duplication of cls by moving the first one to after the A: label.
Like this
@echo off
:A
cls
echo enter your password to continue
set /p pw=
if /i "%pw%"=="password" goto OK
echo That's the wrong password.
pause
goto :A
:OK
cd ..\