Well, the obvious difference is that requests sent to an https server from a browser form have been encrypted by the browser (using a protocol which it has already negotiated with the server), and then decrypts the responses (that being the whole point of SSL). If you use fsockopen(), you'd need to supply the negotiation, encryption, and decryption layer yourself.
I understand cURL can do https transactions, though I haven't had cause to try it.