View Field, Insert View, View Reference, Block Reference, Insert Block: which to choose to embed a view in a page
Option 1:

Just create a page for the view.

You can set which permission or role should have access to the page.

If you need to display content above or below the view use the header and footer.

Option 2

Use hook_node_view() and views_embed_view() to add the view as a field to the node you want to target:

function hook_node_view($node, $view_mode, $langcode) {

  // Add whatever logic you want here to only target the nodes you want
  if($some_check == TRUE) {
    // Add a new field to the content array
    $node-&gt;content['view_field'] = array(
      // Render you view
      "#markup"=&gt; views_embed_view('view_name', 'view_display'),
    );   
  }
}


You say it's better to not write PHP for maintenance reasons. I would argue the exact opposite - it's much easier to version control code than it is configuration stored in the DB.