leaves the process connected to the terminal. The shell won't send it a SIGHUP. Obviously, it can only be applied to background jobs, because you cannot enter it when a foreground job is running.
shields the process from SIGHUP. One of the effects (the naming one) is that the process won't receive any sent NOHUP. It is completely independent from job control and could in principle be used also for foreground jobs (although that's not very useful).
From the bash man page: $ Expands to the process ID of the shell. In a () subshell, it expands to the process ID of the current shell, not the sub-shell.
echo $$
The $$ variable often finds use in scripts to construct “unique” temp file names
BASHPID
BASHPID: Process ID of the current instance of Bash. bash 4
echo $BASHPID
$PPID
The $PPID of a process is the process ID (pid) of its parent process.
$!
The PID (process ID) of last job run in background