How to display an admin-notice after custom post type edit modification

You need to store the notice in the database so that on page reload the notifiation can be displayed. There are many ways to store the notice in database (I use the Persist Admin Notices template for my plugins), but for the sake of this demonstration I will use a simple time-limited transient,

 add_action( 'publish_vereine', 'post_published_limit' );
 function post_published_limit() {
    $max_posts = 1; // anzahl der maximalen Vereinseintragungen
    $author = $post->vereinsmanager; // nur fuer vereinsmanager limitierung

    $count = count_user_posts( $author, 'vereine'); 

    if ( $count > $max_posts ) {
        // wenn mehr als 1, dann auf Entwurf setzen und Notiz für vereinsmanager ausgeben
        
        $post = array('post_status' => 'draft');
        wp_update_post( $post );
        //store the transient notice to expire in 5 minutes.
        set_transient('vereine_post_notice', 'You can only publish 1 post at a time', 5 * MINUTE_IN_SECONDS);
    }
}

then hook into the admin notice process,

add_action('admin_notices', 'display_notice');
function display_notice(){
  $notice = get_transient('vereine_post_notice');
  if(!empty($notice)){
    echo '<p>'.$notice.'</p>';
  }
}