am sorry, an a beginner, so please forgive me if i make mistakes, so here is what I understood:
PBKDF2: uses HMAC, so, the message is the password, and the key that crypts the message is the salt? or is it the inverse? and this is done the number of the rounds $n$ times.
So I guess the second one, because the user will write the password, and then the program will consider this as a key to decrypt the salt?
BCrypt: used to avoid custom hardware cracking, altering the table where the hashes are stored to make the result unpredictable so to force the program to wait and to block? and using only 4KiB in CPU cache to block the program (GPU will become slow since they dont have cache? )? BCrypt encrypts the password using a key derived from the same password using Blowfish $2^n$ times?
SCrypt: kind of BCrypt but...uses lot of memory to block the process on a huge amount of memory, to block the calculations and force the program to wait?
So, BCrypt uses a small amount of CPU Cache, while SCrypt uses a large amount of RAM?