Do I say
How many years have you been speaking English?
or
For how many years have you been speaking English?
And why?
Both are technically correct, but the latter is more formal and less common. The first would be the more common way to say it.
I think both forms are possible and OK. I prefer: For how many years, because that indicates better that you ask for a period of time.
I think both are acceptable; the second might be more technically correct but the first sounds more natural.
Most question sentences start with the question word at the beginning (who, what, where, when, why, etc.). Starting with a preposition sounds like you're trying to be strictly correct but it adds awkwardness. For example, in natural casual conversation you'll hear, "Who are they going with?" But in proper writing you'll see "With whom are they going?" which is more technically correct but sounds like a robot.