User Following System

Here are some pointers:

Why are you using output buffering in tb_get_follow_unfollow_links()? I see no reason this is needed.

In tb_get_follow_unfollow_links() only echo 1 button. On page load use php to decide what classes and button text you have to set.

With jQuery change the button when you get a successfull ajax return. Change the button class, so you can trigger a different ajax call on click.

Use .on to get events from dynamic (loaded from ajax) elements: $( "#container" ).on( "click", ".element", function() {});.

Your second question is easy to detect with some debugging.
To check if the user already subscribed, you can do something like this:

$following = get_user_meta( $user_id, '_tb_following', true );
if( ! in_array( $id_to_check, $following )) { // user not subscribed, do it now }

Regards, Bjorn