Head[Sequence[b, c]] returns an error (Head::argx: Head called with 2 arguments; 1 argument is expected) on my system (MMA 12.0, Win10-64). This makes sense because Head has no Hold attributes, so Sequence is evaluated within Head, leading to Head being called with two arguments, i.e. Head[b, c]. Look at the Trace output:
Trace @ Head[Sequence[b, c]] {HoldForm[Head[Sequence[b, c]]], HoldForm[Head[b, c]], {HoldForm[Message[Head::argx, HoldForm[Head], HoldForm[2]]], .... }
You can write your own function that holds sequences:
ClearAll[myHead] myHead[expr_] := Head@Unevaluated@expr SetAttributes[myHead, SequenceHold] myHead[Sequence[b, c]] (* Out: Sequence *)
As to the second part of your question, Head[[b, c]] is interpreted as an application of Part (i.e. [[...]]), so MMA thinks that you are trying to take part (b,c) of object Head.
Head[b, c]: ExamineTrace[Head[Sequence[b, c]]]. (2)Head[[b, c]]is short-hand forPart[Head, b, c]: examineFullForm[Head[[b, c]]]. $\endgroup$Sequence[]often behaves differently when used with other functions due to its special properties, so one needs to do things differently if you're doing things with it. $\endgroup$