The problem is that you're translating the camera in world space, not the local space after it's rotated. A camera's position and rotation are stored in two Vector3's, not a Matrix.
You need to rotate your camera's translation vector before applying it.
By the way, you're going to run into GC stuttering issues if you instantiate a lot of Objects like that every frame. Also, there's already a translate method for the Matrix4 class, so you don't need to be manually multiplying it by another matrix to translate the object.
I would revise as follows:
//rotate player
float playerRotation = left ? 1 : -1; //TODO (should involve delta time...)
inst.transform.rotate(Vector3.Y, playerRotation);
//translate player
float playerZtranslation = forward ? 0.2f : -0.2f; //TODO (should involve delta time...)
inst.translate(0, 0, playerZtranslation );
//move camera to position of player.
inst.transform.getTranslation(camera.position);
//rotate camera to face same direction as player
inst.transform.getRotation(mTempRotation); //mTempRotation is a member Quaternion variable to avoid unnecessary instantiations every frame.
camera.direction.set(0,0,-1).rotate(mTempRotation);//reset and rotate to match current player angle
//rotate translation vector to match angle of player
mTempTranslation.set(0,0,5).rotate(mTempRotation); //mTempTranslation is a member Vector3 variable to avoid unnecessary instantiations every frame.
//and apply it.
cam.position.add(mTempTranslation);
Edit (see comments): Maybe try this:
//rotate and transform player variables
mPlayerYAngle += left ? 1 : -1; //TODO (should involve delta time...)
mPlayerPosition.add(0, 0, forward ? 0.2f : -0.2f); //TODO (should involve delta time...)
//apply changes by resetting transform to identity and applying variables
inst.transform.idt().translate(mPlayerPosition).rotate(Vector3.Y, mPlayerYAngle );
//move camera to position of player.
camera.position.set(mPlayerPosition);
//rotate camera to face same direction as player
camera.direction.set(0,0,-1).rotate(mPlayerYAngle ,0,1,0);//reset and rotate to match current player angle
//rotate translation vector to match angle of player
mTempTranslation.set(0,0,5).rotate(mPlayerYAngle ,0,1,0);
//and apply it.
cam.position.add(mTempTranslation);