select table1.id, table1.DateOpened, table1.Status,
table2.Name, etc
from table1
join table2 on table1.CurrentName = table2.id
where table1.Type = 'Add'
and (Status = 'Open'
OR Status = 'Pending');
Order does not matter in JOIN (unless you say STRAIGHT_JOIN).
Order does not matter in WHERE.
and (Status = 'Open'
OR Status = 'Pending')
-->
Status IN ('Open', 'Pending')
Do you have these indexes?
If you do EXPLAIN EXTENDED on the SELECT, and then do SHOW WARNINGS, you may find that the ON clause turned into a WHERE clause anyway. Don't worry about it. OTOH, there can be different semantics when the condition is in the ON versus the WHERE.
(3b) If you had
INDEX(Type, Status)
it _might_ use that index and run faster. Or it might not. That is, if "too many" of the rows have the indicated Type and Status, it would decide that is is more efficient to ignore the index and simply do a "table scan" rather than bouncing between the index and the data.
Another thing to try (after adding the INDEX I suggested):
select table1.id, table1.DateOpened, table1.Status,
table2.Name, etc
from table1
join table2 on table1.CurrentName = table2.id
where table1.Type = 'Add'
and Status = 'Open'
UNION ALL
select table1.id, table1.DateOpened, table1.Status,
table2.Name, etc
from table1
join table2 on table1.CurrentName = table2.id
where table1.Type = 'Add'
and Status = 'Pending'
;