Conditional function for excluding first image from content, not working

What it is doing, instead, is removing the first image from the_content() on all posts for the index page…

That’s because that’s what your callback is telling the filter to do. It returns true for all posts in your specified contexts (archive index, category index, blog posts index), not just for the first post in those indices.

…and removing the_content() altogether on all of the single pages.

That’s because, if your conditional returns false, you don’t return anything. You need to return $content; outside of your conditional.