公式の W3C HTML5 ドラフトで答えを見つけました:
type 属性は、リンクされたリソースの MIME タイプを示します。これは単なる助言です。値は有効な MIME タイプでなければなりません。
外部リソース リンクの場合、 type 属性はユーザー エージェントへのヒントとして使用されるため、ユーザー エージェントはサポートしていないリソースを取得することを回避できます。属性が存在する場合、ユーザー エージェントは、リソースが指定されたタイプであると想定する必要があります (たとえそれが有効な MIME タイプでなくても、たとえば空の文字列でも)。属性が省略されているが、外部リソース リンク タイプにデフォルト タイプが定義されている場合、ユーザー エージェントはリソースがそのタイプであると想定する必要があります。(...)
ユーザー エージェントは type 属性を正式なものと見なしてはなりません — リソースをフェッチする際に、ユーザー エージェントは type 属性を使用してその実際のタイプを決定してはなりません。実際のタイプのみ (...)。
スタイルシート リンク タイプは、リソースの Content-Type メタデータを処理するためのルールを定義します。(...)
ドキュメントに次のようなラベルの付いたスタイル シート リンクが含まれている場合:
<link rel="stylesheet" href="A" type="text/plain">
<link rel="stylesheet" href="B" type="text/css">
<link rel="stylesheet" href="C">
...次に、CSS スタイル シートのみをサポートする準拠 UA は、B および C ファイルをフェッチし、A ファイルをスキップします (text/plain は CSS スタイル シートの MIME タイプではないため)。
ファイル B と C については、サーバーから返された実際のタイプを確認します。text/css として送信されたものにはスタイルが適用されますが、text/plain やその他のタイプのラベルが付いたものには適用されません。
2 つのファイルのいずれかが Content-Type メタデータなしで返された場合、または Content-Type: "null" のような構文的に正しくないタイプで返された場合、スタイルシート リンクのデフォルト タイプが開始されます。デフォルト タイプは text/css であるため、それでもスタイルシートは適用されます。
属性については<style>
、同じドキュメントに次のように記載されています。
type 属性はスタイリング言語を指定します。属性が存在する場合、その値はスタイリング言語を指定する有効な MIME タイプでなければなりません。charset パラメータは指定しないでください。属性が存在しない場合に使用される type 属性のデフォルト値は、「text/css」です。[RFC2318]