Thanks for your detailed replay Ivan. However it didn't quite do things in the way I wanted - maybe I didn't make my question clear.
Part of what I was asking was curiosity of how the ManageUsers control worked, and if I could use it for the innards of my custom dialogue. I was curious to how it looked and behaved in the various modes, and what the default template for each mode should look like, what controls were needed, etc. I was thinking it might be able to use it in other scenarios, not just for picking roles. In the end I had to go digging around with Reflector to find the controls that were needed, and actually that the Edit template was needed for Roles mode.
The Role picker I'm trying to create is actually a context/user sensitive one, so the list of Roles available depends on who you are and why you are trying to select Roles for. This is all within a pluggable module, so I wanted the role picker to be specific to that, and for the template ascx's to be in the resource.
In conclusion, I decided that the ManageUsers control wasn't going to help (as you know). I found out that I could load templates from the resource using something like:
|ITemplate rolesTemplate = ControlUtils.GetTemplate("", "MyAssembly.Resources.ControlTemplates.Backend.WebEditors.RolePicker_Roles.ascx", this.GetType());
Which was another of my questions that perhaps I wasn't clear on my motivation.
I am accessing Roles via Telerik.DataAccess.AspnetProviders, and some custom Nolics dbclasses. So I can get SF Role objects with RoleId which is what I wanted. I'm just doing my own 'middle' for the picker now.
Thanks for your help though. I think it would be really useful to get some better documentation for some of the basic API for SiteFinity. It would be really useful in addition to the basic info to give an idea of what the method is useful for, and an example of it's use in context, and if it is deprecated or not.