In the scheme, everything that is not #f is true, therefore '() is considered #t in if .
Thus,
(if '() "true" "false") => "true" (not '()) =>
Using (not (null? x)) is the easiest way to check if a list is not null: it describes exactly what you want, and in the case of corners where you are given what is not a list, it will give you something else behavior:
(if (not (null? #t)) "true" "false") => "true" (if (not #t) "true" "false") => "false"
source share