A self join joins a table to itself. It works like any join; the two copies just need different aliases:
SELECT e.first_name AS employee, m.first_name AS manager
FROM employees AS e
LEFT JOIN employees AS m ON m.employee_id = e.manager_id;
Here e is the employee and m is the same table read as managers. The LEFT JOIN keeps the CEO, who has no manager.
Self joins also find pairs: customers in the same city, products with similar prices. Join on the shared value and add a.id < b.id. Without it, every pair comes back twice (A with B, then B with A) and every row is paired with itself.