<p>I'm trying to create a user control that allows users to make something like the following:</p>

<pre><code>  &lt;uc1:MyControl id="controlThing" runat="server"&gt;

    &lt;uc1:BoundColumn id="column1" Column="Name" runat="server" /&gt;
    &lt;uc1:CheckBoxBoundColumn id="column2" Column="Selector" runat="server" /&gt;
    &lt;uc1:BoundColumn id="column3" Column="Description" runat="server" /&gt;

     ...etc 

  &lt;/uc1:MyControl&gt;
</code></pre>

<p>There are only certain controls I would allow, in addition to the fact that you can have many of any type. I can picture this in XSD, but I'm not entirely sure for ASP.NET.</p>

<p>My ASP.NET voodoo is drawing a blank right now.. any thoughts?</p>

Is it possible for you to override an existing control such as a ListView or GridView? That's your simplest option.
But to create your own custom templated control you need to use ITemplate.
I haven't done one but a quick google returned this:
http://www.developerfusion.com/article/4410/in-depth-aspnet-using-adonet/2/
it looked good.
I have a book "Developing Microsoft ASP.NET Server Controls and Components" which covers it but I haven't read through it indepth yet (
http://www.amazon.com/exec/obidos/ASIN/0735615829/nikhilkothari-20
)