Combining wp_current_user() and a variable

What you have is mostly just PHP errors.

First, dashes are not valid characters in variable names, so are going to have trouble with this– badge-id-$badge_ID— no matter what. You should be using underscores instead.

Second, you need to construct the entire object variable string beforehand, rather than try to construct it as you are using it.

For example…

$badge_ID = $post->ID;
$badge_str = "badge_id_{$badge_ID}";
if ($badge_ID == $current_user->$badge_str) {
  echo 'Yay';
}

Third, I am pretty sure you data structure is more complicated than it needs to be. You have to have an odd construction for badge_id_* like $current_user->badge_id_123 = 123; with numerous different badge ID object variable names, when you could just have $current_user->badge_id = 123. If you did that, you could simply this to:

$badge_ID = $post->ID;
if ($badge_ID == $current_user->badge_id) {
  echo 'Yay';
}