I recently struggled with this code and thought I would document it here.
SPListTemplateCollection listtempColl = web.ListTemplates;
SPListTemplate myListTemplate = listtempColl["Random List Template"];
web.Lists.Add("MyList", "my list description", myListTemplate );
Pretty simple code. I use the ListTemplate collection of the SPWeb to get a template I have already deployed. I then use that template in the Add method to create the list instead of one of the built in templates.