I'm not sure where you're having the trouble with this. As you mention:
Step 1 - Find the position of the robot by trilateration with the three beacon distances.
Step 2 - Find the heading of a straight line between the location you are at and any of the three beacons
Step 3 - Find your heading by subtracting your local heading from the result of Step 2
Step 4 - Put bounds on your heading (0-360 degrees, for example).
So, for instance, say you have beacons at (x,y) positions of (1,0), (1,1), and (0,1). You trilaterate your own location to be (0,0), because the distance reading from each beacon was 1.
Great.
Now, you have to define what "heading" means to you. Is this an "engineering" heading, where 0 is the +x-axis and the angle goes positive counter-clockwise? Or is this a navigation heading where 0 is "up" (North) and the angle goes positive clockwise?
Whatever the case, let's chose to look at the beacon located at (1,0). There is a heading from your location to that beacon. If you're using navigation coordinates, it's 90 degrees (East).
Now, what is the angle of that beacon as it appears to your robot?
If you are measuring it with an angle of zero, then that means that you are pointed directly at it, which means that your heading is the same as the heading between your point and that beacon, which means that your (navigation) heading is also 90 degrees.
Say you measure it as being at -90 degrees relative to your robot (again, on a navigation setup). If the beacon is -90 degrees relative to you, then you are +90 degrees relative to the beacon. This means that your heading is whatever the heading is to the beacon, plus 90 degrees. That is, your robot's heading is 180 degrees (South).
You should be able to do this with any of the beacons and get the same answer.