lang属性の内容は簡単に言うと [言語コード]-[使用国・地域] という構成になっています。 [使用国・地域]は省略することができ、その場合ハイフンはつけません。 "ja-JP" の場合、"ja" は「日本語」であることを示し、 "JP" は「日本国で使われている」ということを示します。 たとえば英語の場合、イギリス英語とアメリカ英語には若干の差異があるので (colour と color など)、イギリス英語には "en-GB" 、アメリカ英語には "en-US" などと指定していた方がよいとされています。 しかし日本語の場合は日本国以外で使われることはほぼ無いため、"ja-JP" の "-JP" を省略して "ja" とだけ書いてもほとんど同じ意味です。 ですから、違いはほとんどありません。単に「日本語」と指定しているか、明示的に「日本で使われている日本語」と指定しているかの違いです