In the Marketo Documentation for Custom Activities it barely mentions the "API Name" when creating fields for Custom Activities:
5. Name the field. The Api Name auto-populates. When you're done, click Save.
That is all that is says about the API Name.
The documentation for the REST API to populate a custom activity only says that using it is optional.
I have done some tests, and found that you must pass in the Field Name for Custom Activities, but the apiName is not required and seems to do absolutely nothing?
So what is is used for? Surely if the UI supports adding an API Name for a custom activity field, and the API supports passing it in, it must have some purpose?
The only way to populate custom fields is via an API, which is why you'll need its name. You'll need a REST or SOAP service that can connect to Marketo and push data into your Custom Object. If you're hoping to use them as an extension of the lead record for n:n attributes, I got bad news for you....
Marketo itself can't push data into Custom Objects.