1. Достаточно просто реализуется на базе отдельного инфоблока. По сути комплект выступает как отдельный товар. В западных интернет-магазинах такой функционал называется bundles. Либо как вариант можно сделать функционал разделения комплектов в корзине на два отдельных товара из каталога товаров - это по сложности чуть больше.
2. Есть накопительные скидки - скидка в зависимости от суммы предыдущих заказов. Есть личный счет, на который можно отправлять процент от суммы оплаченного заказа и покупатель в дальнейшем может использовать этот счет для полной или частичной оплаты заказов.
3. Есть стандартный вариант на уровне корзины. По сути та же корзина, только товары отмечены, как отложенные.
5. Есть просто скидки. Но если вы их хотите совместить с новостями, чтобы получилась лента акций, то требуется небольшая доработка для связи элементов инфоблока в новостях со скидками.
6. Если набор характеристик предопределен, то никаких проблем. Просто вместо значения свойства показывается картинка. Если надо управлять этим делом, то сложнее и я бы не советовал ради такого простого функционала городить систему управления на базе отдельного модуля или инфоблока, проще по FTP заливать нужные картинки и сопоставлять их со значениями свойств.
8. В принципе адреса могут быть любыми, но нет особого смысла уходить от стандартной реализации, когда в адресе только 1 конечный раздел. Уход от стандартного представления URL влечет за собой дополнительные проблемы и необходимость дописывания многого функционала.