Well, I'll give you the easy way:
* SP or COOP only, since all players will see the marker when it appears.
* Will not show the marker to anyone who joins the game after the second objective is revealed. However, they will still get the trigger placed in the right position.
You already have a trigger set up for objective one, which is the one you want to reveal objective two. Add the following trigger code to it:
if (isServer) then { "objective2" setMarkerPos (getPos ([ob2a, ob2b, ob2c] select (floor (random 3)))); "objective2" setMarkerType "Attack"; objective2Trigger setPos (getMarkerPos "objective2"); };
Create a new trigger for the second objective and place it far out to sea, so the players can't get to it before it is revealed. Name it "objective2Trigger". Set this up as you normally would, other than its initial position.
Create a marker called "objective2" which is of type "Empty" (There are actually two markers called "Empty", for reasons best known to BIS. Choose the one that is a square with two chevrons, rather than the one that is a circle). This will not initially be visible in the mission.
Add 3 gamelogics, one each at the possible location of the second objective (named ob2a, ob2b and ob2c).
EDIT: added method for moving the second objective trigger as well as making the marker appear in the right place.