PHP Warning: strip_tags() expects parameter 1 to be string?

If you look at the source of get_the_term_list, you will see that it will try to get the terms first. If that doesn’t succeed, it will return an error or false. So you would have to account for that before you try to strip the tags:

if (!is_wp_error ($categories) && false != $categories)
  $categories = strip_tags( $categories );

In all other cases get_the_term_list returns a string and your code should work fine.

By the way, it’s not very useful to have get_the_term_list to add <p> tags if you strip those away immediately. Also, there is a filter towards the end of get_the_term_list that you could use to strip the link tags that are added by the function. Finally, you may want to take a look at get_the_terms, which will give you a nice array of terms without any tags to strip.