A message digest (also known as a "hash") is the output of a digest or cryptographic hash function, which is a one-way fixed-size-output compression function having the property that small changes to the input (message) result in large, unpredictable changes in the output digest. How to use such a function depends greatly on what you are trying to do with it.
The term "salt" refers to a small, random input to the hash function that is used to alter the state of the function prior to adding additional input that may be predictable in some way. This is a security mechanism that was developed for protecting passwords when using a message digest as a password verifier function. If a salt is not used, then any users having the same password will have the same password hash stored in the user database. Enormous efficient hash reversal tables ("rainbow tables") exist for the most common message digest functions used in this manner (MD5, NTLM password hash, etc.), and an attacker who obtains the database has only to perform a table lookup to obtain the plaintext password of every user. Using a salt prevents the generation of these tables, since each byte of salt results in a 256x size increase of the lookup table.
It's very important to note that simple message digest with salt is an insufficient protection for password storage and verification. This is a complex problem, and solutions already exist that can properly resist attack: PBKDF2, bcrypt, scrypt, and others.
Similarly, verifying the proper transmission of a message requires the use of a more advanced cryptographic construction called a Hashed Message Authentication Code (HMAC). This is built on a message digest function, but uses a cryptographic key to guarantee not only the integrity of the protected message but also the authenticity of the message digest itself.