In more detail
A salt is a random value added to a password before it is hashed, so that the same password produces a different hash for every user. The salt is stored in the clear next to the hash. It defeats precomputed "rainbow tables" and means a thief must attack each password separately. Modern password hashes such as bcrypt and Argon2 generate and store the salt automatically. A salt is not a secret key, and it does not make a weak password strong.
Why it matters
Without salts, every account that uses password has the identical hash, so one cracked value exposes all of them and lookup tables work instantly. With a unique salt per account, the thief gets no shortcut and must run a separate Brute-force attack search for each user. Never use one global salt or build your own scheme: use a library that handles it.
Example
The unsalted SHA-256 of password is always 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8. Prepending the salt x9Qk gives cc89e743...c2aa, and prepending m2Zr gives e7564dd4...a556: same password, unrelated hashes. (Plain SHA-256 is still too fast for passwords; this only shows the effect.) A bcrypt string such as $2b$12$ followed by 22 characters of salt and 31 of hash carries its own salt, so nothing extra is stored. Try it with the Bcrypt Generator and see How Hashing Works.