nil? is defined on all Objects, it only returns true on the nil singleton.
blank? is defined on all objects too, it returns true if the object also responds to empty? and is empty, or is a false type value (!object is always true).
empty? is defined on several collection objects, and is true if it has no elements. It is also defined on String.
note that blank? is ActiveSupport and not in Rails 1.8.