For a quick example, there are many languages where you cannot accidentally run off the end/start of an array, barring a compiler error.
With a language like C / C++, it's possible. Not probable, given that sort of testing. But possible nonetheless.
Some languages are also easier to test than others, partially because of this, partially because of other issues. For instance, in some languages you can guarantee at the language level (again, barring compiler errors) that something won't be modified. (Like const, but actually working.)
Yes. The more the type-system encodes the more the type-checker (in the compiler) proves for you. No matter how much testing you have, nothing will ever come close to proving properties.