This link is very similar to what you are asking I think. It doesn't have specific configuration however.
If you are wanting to use default routes I would be inclined to use a floating static route on your secondary router:
ip route 0.0.0.0 0.0.0.0 *next-hop-address* 250
Where '250' is the administrative distance of the default route.
On your primary router simply use the above route without the administrative distance and then redistribute it into BGP:
redistribute static route-map *name of route-map* out
You can then match the default route in a prefix list:
ip prefix-list default-route seq 5 permit 0.0.0.0/0
And match the prefix list in the route-map:
route-map *name of route-map* permit *seq number*
match ip address prefix-list default-route
iBGP has an administrative distance value of 170. So when your primary router advertises that to your secondary router it will prefer the iBGP route over the statically set default route. If you want to advertise the default from the secondary router to the primary then I would suggest using local preferences. Local Preferences values that are attached to routes on BGP advertisements. A higher Local Preference is preferred in BGP even when they have the same Administrative Distance (170) and they are the same route, in this case, 0.0.0.0/0. In that route map you can also attach local preference to the route as well as other BGP attributes.
set local-preference *value*
Note, default local preference is 100.
If you want to track whether there is reachability for the default routes you can attach an ip sla to the static route. You can read about ip sla's here.
In that link I mentioned at the start, it talks about how the ISP's would prioritise sending back to a specific connection. So I'd recommend having a read of that to see if that answers that part of your question.