The compiler won't generate its own SSE3 assembly unless it is told to do it by the build system, so strictly speaking, he would need to recompile his kernel to get SSE3 instructions into areas where the kernel developers did not do this manually.
Yes of course but recompiling your kernel with "sse3" have few chance to build optimized "sse3" path. The best way is to "manually" code SSE3 path: this is the subject of this article. And if that is done in the kernel ("manual" sse3 paths), you don't have to compile the kernel with "sse3" options to use this optimization.
Yes, it will be able to detect it at runtime, there is a feature called CPUID that is used for this. You can also see my previous post in this thread on how the kernel determines the best implementation for raid6.