For #3 and #4 any correctly returns #t and #f respectively. However for #2 shouldn't any return 2 instead of, what I'm assuming is, (void)? What is the correct behavior here?

Nick,

#;2> (any (lambda (x) (if (even? x) x)) '(1 2 3))

Change that to

(any (lambda (x) (if (even? x) x #f)) '(1 2 3))

or more idiomatically

(any (lambda (x) (and (even? x) x)) '(1 2 3))

Your if statement returns void in the false case (technically, an unspecified value; in Chicken, it's void). But the only false value in Scheme is #f. Therefore your predicate always returns a true value for the first value it hits, so it will return void for 1. It would have returned 2 if the first value were 2: