Get custom wp_query search results to appear on search.php

You are mixining the form display and the search logic. this is the first bad thing in your code.

Second, the hook you have used are triggered everytime a query run, even the query inside your function, this bring to an infinite loop.

So, first of all separate logic from display:

function vkss_super_search_form( $atts="" ) {
  $atts = shortcode_atts( array(
    // your default params
  ), $atts );
  // some code you have here
  ob_start();
  ?>
  <div id="sbc">
  <form method="get" action="<?php echo $blog_url; ?>" id="ss-search">
  <input type="text" value="<?php $search_text  ?>" name="supers" onblur="if (this.value == '') { this.value="<?php echo $search_text; ?>";}" />
  <?php echo $list; ?>
  <input type="submit" id="sbc-submit" value="Search" />
  </form>
  </div>
  <?php
  return ob_get_clean();
}
add_shortcode('vkss_super_search', 'vkss_super_search_form');

Previous function print the form via shortcode.

Now you have to run the search when the form is submitted. You want to use the search.php but you have to notice that no one force to have that file on a theme, so you have to provide a fallback to index.php (just like WordPress does) if that file is not present.

You can use 'pre_get_posts', to check if the 'supers' GET variable is present and if so run change the main query. after that, the search.php will be used by WordPress because you are setting a search query.

add_action('pre_get_posts', 'vkss_super_search');

function vkss_super_search( $query ) {
  if ( ! is_admin() && $query->is_main_query() && $query->is_front_page() ) {
    $supers = filter_input( INPUT_GET, 'supers', FILTER_SANITIZE_STRING );
    if ( empty( $supers ) ) return;
    $query->is_search = true;
    $query->set( 's', $supers );
    // $query->set( 'category__not_in', 1 );
  }
}

Note that all this second code block in unnecessary if you name your input field 's' instead of 'supers'.

<input type="text" value="{$search_text}" name="s" />