A: They are both correct! They both mean Saturday and can be used interchangeably. So why does Saturday get two names in German? First of all, which version to use depends on where you live in the German speaking world. Western and southern Germany, Austria and Switzerland use the older term “Samstag”, whereas eastern and northern Germany tend to use "Sonnabend". (The former DDR recognized "Sonnabend" as the official version.)
Historically the term "Sonnabend" can be traced back surprisingly to an English missionary! It was none other than St. Bonifatius, who was determined during the 700’s to convert the Germanic tribes in the Frankish empire. One of his items on his to-do list was to replace the word "Samstag" or "Sambaztac" as it was known then, which was of Hebraic origin (Shabbat), to the Old English term “Sunnanaefen.” This term made sense since it signified the evening and later on the day before Sunday and thus was easily integrated into old high German. The term “Sunnanaefen” evolved into the middle high German “Sun[nen]abent” and then finally into the version we speak today.
As for St. Bonifatius, despite his successful mission among the Germanic people, was killed by a group of inhabitants in Frisia (Friesland), which is known as the Netherlands (Niederlande) and north western Germany today. It is interesting to note that the dutch kept the original version for Saturday only.