global $post inside plugin query messes up every new post page in wp-admin

You have two problems in your code.

  1. You use $post as a iteration variable which is an habit best avoided
  2. You use setuppostdata which changes the global $post without you using any function that actually needs it

your loop should look like

foreach ( $pp_query as $p) : 
       $pointer_query[] = array(
            'id'       => get_post_meta($p->ID, '_sbap_pointerid_text', true ),
            'screen'   => get_post_meta($p->ID, '_sbap_screen_text', true ),
            'title'    => get_the_title($p->ID),
            'content'  => get_the_content($p->ID)

        );
endforeach; endif;

then the reset_post_data is unneeded as well