cURL is simply a command-line utility, written in C, that runs on a variety of binary platforms (Windows, Linux, Solaris, etc). Arguably, almost anything you can do with cURL you can do with Apex Code. Heroku can't readily determine a request from cURL versus Apex Code versus a telnet connection with the appropriate code copy-pasted from Notepad.
What you need to know is the method (POST), the headers required (Content-Type, Content-Length, etc), and the expected payload (XML, JSON, URL-encoded, etc). Once you know the expected format, you can then proceed to perform your POST. The tricky part is that Apex Code is a bit more "low level" than cURL, in the sense that you, as the developer, have more input into how the message is formed.
The single exception to this rule is that Apex Code doesn't handle binary data very well. It usually has to be encoded in base64 before you send it out. This will modify the types of headers you may need to use. However, unless the third party resource only accepts binary data streams (rare), there's a very likely possibility that you can indeed call this resource using Apex Code, since Apex Code uses the same HTTP standards that everything else uses (web browsers, cURL, and so on).
You should probably ask the host if they can provide valid payloads for you to examine, so you can figure out how to replicate them in Apex Code. Assuming they have some decent documentation, you should probably be able to figure out everything you need to know using just their documentation plus the salesforce.com documentation.
Given this comment:
curl -i -X POST --data "firstname.lastname@example.org&phone=1234567&company=AcmeInc&years_in_business=3&amount=4000&dealer_id=524b2833f7494317db000001" https://example.com/webform/start/
The code you need would be approximately:
String payload = 'email@example.com&phone=1234567&company=AcmeInc&years_in_business=3&amount=4000&dealer_id=524b2833f7494317db000001';
HttpRequest req = new HttpRequest();
Http binding = new Http();
HttpResponse res = binding.send(req);
Most likely, the pieces you missed was the Content-Type (needs to be form encoded), and possibly the Content-Length (needs to be the total size of the body). You may need to tweak this a bit to work, but this should be close.