The form A is the more correct one:
>He sometimes speaks Spanish, which I can't understand.

The part of the sentence that follows the comma is a relative clause, connected to the *noun* "Spanish".  In that clause "*I*" is the subject "*can't understand*" is the predicate.  The **object** of that clause is actually "*Spanish*" represented by the relative pronoun "*which*".  The pronoun migrates to the beginning of the clause and retains the status of the object.

If we split the sentence into two, we get
>He sometimes speaks Spanish.  I can't understand Spanish.

Now, why is "which language" incorrect?  Simply put, **because it would be *redundant***.  The word "Spanish" in the main clause *already has the meaning* "**language**".  It's does *not* mean "architecture" or "history", so there is no need to repeat it.
<hr>
As far as "speaks ***in*** Spanish" versus "speaks Spanish", there is no difference.