Hi ,
For your first Requirement, add Material groups using system modifications
you can check KOMP and KOMG structure for addition of new pricing fields
and for second requirement, you can control using condition records Vk11 by itemcategory or anothr other differentiator of free of charge item from main item , try to create a new condition table with above combination
please try and revert if you find any difficulty