yes its almost undecryptable which is why most people use it because if some unwanted intruder gets into your database then he cant get the password!
so when logging in, if the users pass is encrypted in the db then you encrypt into md5 the password they gave and then compare it!
if you have a lost password feature you should have a random password function to generate 1, then email it to them, encrypt it in md5 and overwrite the current pass!