OpenCL is a layer between the programmer that don't know about threads programming and the Operating System that needs them for split a process between all cores. is that?
For example, I have a "for" that I know that could be done with thread programming; but I don't know how! I could programming on OpenCL using special syntaxis and this software doing the threads by me??
I guess you might say that. OpenCL goes a little step further than that and tries to provide an abstract layer over what the actual architecture might be. At runtime you can tell your app to run over a certain grid of processing nodes (logical nodes) and let the underlying OpenCL kernel map the tasks to the actual hardware (physical nodes)as it sees fit. This enables things like GPGPU where any knowledge of OS threading wouldn't do you much good (or maybe I don't know yet how to manage threads on the GPU from WinAPI :P).
But yeah, OpenCL would do the threads for you and can sometimes (I would say more often than not) make thread programming less messier than OS threading.