Can I create a node that acts as a pointer to another node of the same type?
You can create a view that lists contests in newest/descending order and limit it to 1 item, and use that to return the nid of the lastest contest, or if you are comfortable with SQL, do something like select nid from {node} where type="contest" and status=1 ORDER BY created DESC limit 1 to get it.

You can then use that as an argument to another view that returns recipes based upon what contest they reference, eg, all recipes with a contest node reference of nid.

You can do that all inside the views UI with default arguments and so forth, or create a module to do it.

MORE SPECIFICS--the easy part:


create a view, filter it on published recipes
put in the fields area whatever you want to see, eg, the title linked to the recipe, a node teaser, etc.


MORE SPECIFICS--the hard part:


add an argument to the view:

a. select the field in recipe that is the node reference to contest

b. in action to be taken if argument is not present, select php code and enter:

$nid=db_result(db_query('select nid from {node} where type="contest" and status=1 ORDER BY created DESC limit 1'));
  return $nid;
save everything :)
Preview the view.  What should be happening now is the view will be returning all recipes that have the latest contest nid (aka node reference) in the field you entered in the argument above.