Так согласно условию в WHERE вам
не должно показывать пользователя, у которого date_end заполнено. Вот база и
не показывает. Что вы ещё от неё хотите? Что-бы она показала то, что не должна показать?
P.S. Кстати, у вас есть ошибочное понимание.
Когда значений в таблице user_rank нет вообще (по умолчанию значения 'Null')
Когда записи в таблице нет вообще - база на любой столбец записи из user_rank будет говорить, что он null. То есть и столбец `id` будет null, и столбец `id_user`, и `id_rank`, и `date_start`, и `date_end`.
Независимо от их значений по умолчанию (null или что-то еще). Таково поведение MySQL при JOIN отсутствующей записи.