а1. Например, примерно так
Dim ssetObj As AcadSelectionSet
Set ssetObj = ThisDrawing.SelectionSets.Add(ИМЯ_МНОЖЕСТВА)
ssetObj.AddItems ОБЪЕКТ`
ThisDrawing.Wblock ИМЯ_БЛОКА, ssetObj
а2. Например, примерно так:
Dim blk as AcadBlock
set blk = ThisDrawing.Blocks.Add(БАЗОВАЯ_ТОЧКА, ИМЯ_БЛОКА)
blk.add???, PAR1, PAR2, ...
??? - Cylinder, Line еtc. (количество и тип параметров зависит от того, какой объект добавляете в блоку). И все это прекрасно описано в HELPe.
б. Точно не помню, но, IMHO, применением метода InsrteBlock к блоку, в который вставляется нужный блок. А для того, чтобы удалить вложенный блок, составной блок (точнее, BlockReference) сначала надо "взорвать", удалить ненужный объект (вложенный блок), а затем собрать из оставшихся объектов новый блок, присвоив ему тоже имя (предварительно удалив из чертежа старый блок)