First you want to create a security group called Deny_Full_GAL. Add all users to it. Next add this group the Default Global Address List and deny all permisions for this group, you also need to remove authenticated users, everyone and anonymous users groups from the permissions list. This should prevent the users from seeing the Default GAL.
Next. Setup 2 security groups:
UserGroup1
UserGroup2
and 2 new GALs
GAL1
GAL2
Now add all the users you want to see GAL1 into UserGroup1 and add this group to the permission of GAL1 - remove all permissions then add back in 'allow' access for:
Read
Execute
List Contents
Read Properties
List Object
Open Address List
Also make sure you remove authenticated users, everyone and anonymous user groups from GAL1 security permissions.
Do the same for GAL2 but with UserGroup2. You should now have 2 GAL's which can only be seen by UserGroup1 and UserGroup2 respectively.
To add users to a GAL, you need to do an LDAP querey by selecting 'Modify' on the General tab of the GAL properties. You can then include all users of a specific group, UPN or whatever.
NB: You could also use the list object permission to prevent users seeing the Default GAL but this is a bit more involved and in my book the easier solution is creating the Deny_Full_GAL security group.