Odpowiedź Nanne podane wyjaśnia, dlaczego nie otrzymujesz pożądanego wyniku (twoja klauzula WHERE usuwa wiersze), ale nie wyjaśnia, jak to naprawić.
Rozwiązaniem jest zmiana WHERE na AND, aby warunek był częścią warunku złączenia, a nie filtrem zastosowanym po złączeniu:
SELECT day.days, COUNT(*) as opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date))
AND tracking.open_id = 10
GROUP BY day.days
Teraz wszystkie wiersze w lewej tabeli będą obecne w wyniku.