Accepted answer

Thanks to help from David Radcliffe, I have a workable solution. 

In the layout.layout.default.json config file there are two important pieces of information that need to be changed to remove a block. 

1) I need to remove the block from the header region = config_set

2) I need to remove the details/description of the block = config_clear

config_set('layout.layout.default','positions.header', array('84c43df4-1165-4faf-8700-c362a7153c0b'));
config_clear('layout.layout.default','content.df51ab0e-b635-4a17-a308-8dd5b2ea51e1');

My config set includes the UUID for the block I want to keep. In config_clear I specify the details of the block I am removing.

NOTE: I can hard code the UUID for the blocks, because they are hard-coded into the layout by default on installation. Blocks that have been added through the UI will have random UUIDs (I believe) and this method will not work. 

Comments

The comments there suggest something like this, from standard install profile, but my attempt to modify this failed.

function standard_form_install_configure_submit($form, &$form_state) {
  // Update the home page hero block to use the site name.
  $layout = layout_load('home');
  foreach ($layout->content as &$block) {
    if ($block->delta === 'hero') {
      $block->settings['title'] = st('Welcome to !sitename!', array('!sitename' => $form_state['values']['site_name']));
      break;
    }
  }
  $layout->save();
}

Can you describe specifically what 'failed', or post a copy of your specific code and where you're running it from?

The attempt that failed, just had no effect. No error message and no results. 

I found that the home page layout is defined by a json file in the install profile, so I was able to easily edit that (in my install profile) to achieve the changes I want on the home page. 

   layout.layout.home.json

Now, I just need to figure out how the default layout is being generated and how I can alter that. 

OK, I found that layout.layout.default.json is in the core layout module. Now, I just need to figure out how to override this with alternate file (in install profile) or how to edit it. Goal is still the same:

1) Disable the primary navigation block

2) Change the default menu in the header block. 

OK, I was able to change the default menu in the header block with this in .install file (install profile) - now just need to figure out how to disable the primary navigation block in default layout (my original question:-): 

config_set('layout.layout.default','content.84c43xf4-1165-4faf-8700-c362a71a3c0b.data.settings.block-settings.menu', 'main-menu' );

Thanks to help from David Radcliffe, I have a workable solution. 

In the layout.layout.default.json config file there are two important pieces of information that need to be changed to remove a block. 

1) I need to remove the block from the header region = config_set

2) I need to remove the details/description of the block = config_clear

config_set('layout.layout.default','positions.header', array('84c43df4-1165-4faf-8700-c362a7153c0b'));
config_clear('layout.layout.default','content.df51ab0e-b635-4a17-a308-8dd5b2ea51e1');

My config set includes the UUID for the block I want to keep. In config_clear I specify the details of the block I am removing.

NOTE: I can hard code the UUID for the blocks, because they are hard-coded into the layout by default on installation. Blocks that have been added through the UI will have random UUIDs (I believe) and this method will not work.