It is the same as a c++ interface, but more lenient. The blueprints that inherit from a blueprint interface automatically create functions with return values for you, but void functions you need to place on the graph yourself.
Interface functions with return values will only complain at you if your return value is an array, and I think object type.