A: 

Youtube can provide videos encoded on several formats like h263 (flashvideo), h264, etc. Which format are you downloading? (this site also has good information of youtube audio/video formats)

Use a tool to verify the file's header and make sure that what you downloaded is ok! If you are on *nix you can execute file on the command line: file filename.flv

Another possibility is that you may not have the codec needed to play the video. This could explain why no video player on your system is able to play the video you downloaded.

karlphillip
Well, The formats of both files are flv. Still, the one I downloaded using curl is not playing.I compared both files and they are identical yet the size is little different. I think the way I write the file is wrong somehow, But its just a guess, I tried writing the file using a stream support from curl, still I get the same result.
YanivH
Ok buddy, I understood that the container you are using is FLV. But inside it, you could have multiple video encoding formats. What video encoding is being used? h263 or h264?
karlphillip
It does not really matter, I'll explain why: I took the url that I use to directly download the video, Put it in Firefox and it downloaded, I add flv suffix and played it, It worked perfectly, So i"m assuming it must be in the way i"m writing the file or the way I use curl to get it. (Oh and its H263, Also tried one that was H264, same problem with both.)
YanivH
A: 

Since I"m developing on windows platform I've decided that for downloading the file I'll use URLDownloadToFile Info: http://msdn.microsoft.com/en-us/library/ms775123%28VS.85%29.aspx

This one works like a charm, Still not sure why curl saves the file a little bit different than IE or FF or the above win32 api function.

YanivH