I would start with the pick enemy logic, so whatever enemy is picked you can have its UID set as a variable on the support char so you know which enemy is connected (support.var). You didn't mention how it is picked but for example if it is the nearest enemy to player you can do that, pick enemy nearest to player and set support.var to enemy.UID
Then this helps solve the facing issue, you say pick enemy where UID = support.var, if support X is less or greater than the enemy then mirror the support char accordingly.
For shooting depending on how simple it is, if its just left or right then you can fire bullets and set the angle based on if the support char is mirrored or not, either 180 or 0. If it is more complex angle of shooting then you can just pick the enemy by UID support.var again and set the bullet angle towards the enemy.
The support char would then stay mirrored or not based on the enemy X so you are free to move the support char in terms of following the player how you wish.