nil means no value at all. empty? asks whether a string or collection has no elements, and blank? is a Rails check that also treats nil and whitespace as empty.
nil is the single object of NilClass. Only nil returns true for nil?, and nil has no empty? method.
empty? is defined on String, Array and Hash. It is true only when the length is zero, so " ".empty? is false.
blank? comes from Rails' Active Support, not plain Ruby. It is true for nil, false and empty collections. A string of only whitespace is blank too.
Plain Ruby treats only nil and false as falsy. An empty string and 0 are truthy, which is why blank? is useful for form input.