wp_get_nav_menu_items vs wp_nav_menu

wp_get_nav_menu_items function retrieves an array of menu items for given menu. But the menu is a hierarchy, so there is a need of creating some mechanism that will create that hierarchy based on list of menu items.

On the other hand there already is wp_nav_menu, that will get items for that menu (using wp_get_nav_menu_items) and then it will pass it to Walker class that will generate HTML code for this menu. This function will also take care of cases when given menu doesn’t exist and so on. It is the recommended way to display menu in themes.

PS. I don’t get why you think that you “have to” write your own Walker class. You certainly don’t. WP will use it’s own Walker class as default. And if you want to customize the HTML code for that menu, you can write filters and it will be enough most of the times…