Left Joins are slower.
You would use a left join if you were uncertain about related records existing.
It appears from your naming that you expect that for every company id you'll have an address record with that company id?
And for every address.stateid you'll have a state.id?
If you can answer the above questions YES then you don't need and should NOT use an OUTER or LEFT join.
Left / outer joins are used where it's not certain that related records exist. Example: company id exists, but no address record for that company exists.
Inner or standard join
SELECT company.name , address.address
FROM company, address
WHERE company.id=address.company_id
AND company.id='Foo'
would NOT produce a record in the above case
Outer or Left join
SELECT company.name, address.address
FROM company
LEFT JOIN address ON company.id=address.company_id
WHERE company.id='Foo'
WOULD produce a record with company name returned, and null values for address