WHERE statement returning out of bounds returns
First and foremost:
Change your where clause and put all OR's inside a single parenthesis.
SELECT 
    lead_id, status, owner 
FROM 
    leads 
WHERE 
    owner = 6585993 
    AND ((`status` = 1) OR (`status` = 21) OR (`status` = 3))
ORDER BY
    CASE `status` 
        WHEN 1 THEN 0 
        WHEN 21 THEN 1
        WHEN 3 THEN 2
    END
LIMIT 1
;

Then, if you prefer and order, set and ORDER BY clause using a case to assign the new values, 1 = First (0), 21 = Second (1) and 3 = Last (2).


lead_id | status |   owner
------: | -----: | ------:
  20329 |      1 | 6585993


db&lt;&gt;fiddle here