A nice, and pretty safe way to remove a known content type from a list is to use code like this:
// Remove default Document content type
SPContentTypeId listDocumentCT = list.ContentTypes.BestMatch(SPBuiltInContentTypeId.Document);
if (listDocumentCT.IsChildOf(SPBuiltInContentTypeId.Document))
list.ContentTypes.Delete(listDocumentCT);
This code removes the default Document content type from a list.
The challenge is to get the content type id of the content type that's used in the List, which isn't the same as the content type id of the Site content type's id. This is because adding a content type to a list creates a new content type with the same name but with a different ID in the list. Using SPContentTypeCollection.BestMatch(...)
helps finding this content type id.