Correct way for Attributes in Commerce
There are always different ways to do things in Drupal. Drupal Commerce (DC) is the shining example of this. DC allows for project attributes out of the box using fields on product types that are set to be attributes (this creates an AJAX field as a select option in the add-to-cart form). This is an example of attributable fields. You will notice the price and the photo changes when you change the video type. You can also handle some attributes with line items added to an entire order (this is how shipping is done). If you have global attributes, the best way would be a line item added to the entire order.

You list delivery and background color; I am going to assume these would be global attributes that would apply to any order in your store. These would be prime candidates to use line items added to the order. But this also depends on how you are going to allow your customers to purchase products. 

I would need more infomration about how you want to setup your shopping experience to be able to completely answer the question.

DC is an extremely powerful and flexible shopping cart. But it is complex.