Hi Catharine,
I think you are underestimating the power of XPath! :)
Let's assume your schema is this:
my:myFields
--my:group1
----my:group2
------my:FirstName
------my:SecondName
------my:Info1
------my:Info2
------my:Primary
------my:Info3
------my:ID
Only one primary = yes
I would put a data validation rule on t he my:Primary node. Double-click the node in the designer, go to "Rules and Data Validation" tab, and click to add a custom Data Validation. Use the condition "../preceding-sibling::my:group2[my:Primary = 'yes']", and then setup a custom message. Now, when they insert a new row and try to check Primary even tho one above is checked it will be outlined in red as a data validation error.
Ensure firstName/LastName combo is unique
This one is a little more tough. You might have to use code here, but try this first. Same as above, just use this condition on the my:FirstName and my:SecondName nodes (repeat on both nodes): "../preceding-sibling::my:group2[ translate( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", concat(my:FirstName, my:SecondName)) = concat(current()/my:FirstName, current()/my:SecondName) ]". You might have to play around with the placement of the current(). Use translate on the second part of the condition, too.
Generate a unique number for ever record in the repeating table
Why do you need to do this? You can do it by setting the default value to "count(../preceding-sibling::my:group2) + 1". We have a blog post on this in InfoPathdev.com
Create a calculation and total based on Info3
Easy. Set the default value of your total node to sum( /my:myFields/my:group1/my:group2/my:Info3 ).
FirstName/SecondName comparison to secondary DOM
Same as above, just point it to the secondary DOM.
Well, that's a lot to churn through, but you did ask quite a few questions! Each one of them could be it's own thread, haha. You seem like a pretty adept programmer, but I think you are thinking about InfoPath wrong. It's a very data-centric programming model. You should have a similar mindset with Infopath as you do when you are writing SQL applications. Plus, XPath is kind of similar to SQL... kinda.
Anyway, hope this helps! Try searching around on the forums for answers to each of your individual questions, I know we have gone over some of them before.
Matt Faus / Microsoft InfoPath MVPQdabra® Software / Streamline data gathering to turn process into knowledge