In 9i there is a pre-defined type SYS_REFCURSOR that you can use instead of declaring your own REF CURSOR type.
Prior to 9i, you need to declare your own REF CURSOR type in a package specification so that the caller and the function can both see it. It doesn't have to be the same package: you could have a general purpose package like this:
create or replace package utils
type ref_cursor is ref cursor;
Now utils.ref_cursor can be used anywhere in your code.
No, it is a matter of preference. My preference (pre-9i) would be to define the ref cursor type once in a single package and use it everywhere, simply because it would irritate me to have to keep defining the "same" type over and over otherwise.