What is the best practice for displaying my plugin content in themes?

As you have no idea what the theme templates look like, any attempt to build a ‘neutral’ template is likely to screw up at some point. So your best bet is to hook into elements of the single and archive pages (which may have no separate template – maybe it’s a one template theme).

Really exotic themes excepted there are probably two hooks you can count on to be present: the_title and the_content. You would load your content like this:

add_filter ('the_content','wpse288033_add_to_content')
function: wpse288033_add_to_content ($content) {
  if ( 'book' == get_post_type() ) { // or any other test relating to your plugin
    $my_html = // build html from your custom fields
    }
  return $content . $my_html;

Now, because your html is inside the post content the styling of the content will be applied to it.

This approach is reasonably fool proof, but fairly limited. You might prefer to load your custom fields in the metadata section of the theme, using the the_meta_key hook but you cannot be sure if it’s there. There are more likely to be author, category, tag and date fields, but that could give some weird results, because theme developers tend to reserve limited space for those. Still, if your custom post type its own taxonomy, hooking into the category might be your best option.

At this point the best approach is probably to build an options page for your plugin that allows users to choose where they want to hook the different data elements of your plugin into your pages.