dkr88 - welcome to the forum.
A simple Trunk Group would work like this:
Physical Interfaces > PHONE Port > PrimaryLine: Trunk Group 1
Voice Service > Auto Attendant > PrimaryLine: Trunk Group 1
Voice Services > Gateways and Trunk Groups > Trunk Group1 >
TrunkList: sp1,sp2
DigitMap: ((Msp1)|(Msp2))
If sp1 registration is failed or if all sessions for sp1 are in use, then outgoing calls will pass over to sp2. Registration failure may take a few minutes to be detected by the OBi, so for a time it won't know that sp1 has failed. Most voip providers allow at least two sessions (calls) on each trunk, so if sp1 has two simultaneous calls ongoing, then a third call will then pass on to sp2.
For a call to failover to sp2 the DigitMap (Msp2) must match that call number format. If (Msp2) is the same as (Msp1), then that's not a problem. Also, if they are both the same, then the Trunk Group 1 DigitMap can be simply (Msp1).
If you set up a Trunk Group thought must be given to how 911 is routed. If 911 is routed from your Phone Port OutboundCallRoute, then there's no problem. Some users (including me) use a Trunk Group to provide a failover service for 911. This assumes that you have 911 service from more than one provider.
Incidentally, if you make your PrimaryLine Trunk Group 1, then the phone LED on the front of the OBi will only be on when the phone is in use.