I'm not sure there are any resources specific to this use case, but I've built quite a few add-ons which import channel entries.
It's fairly straightforward with just a couple caveats:
Inserting data for more advanced fieldtypes can be a bit tricky. Your best bet is to look at what fields are actually being submitted via the publish form in the control panel and replicate those data structures programatically. You can easily find some examples for specific add-ons like Playa and Matrix with a little Googling.
You always want to make sure your data array is complete, especially if you're editing an existing entry. If fields are left out of the array when editing, they will get blanked out in the database.
Sample Code:
$this->EE->load->library('api');
$this->EE->api->instantiate('channel_entries');
$this->EE->api->instantiate('channel_fields');
$data = array(
'title' => $entry->title,
'field_id_4' => '',
'field_ft_4' => 'none',
'field_id_5' => $field_id_5_data,
'field_ft_5' => 'none',
'field_id_6' => $field_id_6_data,
'field_ft_6' => 'none',
'field_id_7' => $field_id_7_data,
'field_ft_7' => 'none',
'entry_date' => time(),
'edit_date' => time()
);
// This is how we'd set a Playa field
$data['field_id_4']['selections'] = array(1, 5, 7, 9);
$this->EE->api_channel_fields->setup_entry_settings(2, $data);
$this->EE->api_channel_entries->submit_new_entry(2, $data);
Note, this code was written before some recent API changes, so you will need to adjust the methods a bit to replace the deprecated ones with current ones.
Hopefully this helps you get going.
EDIT
It should be noted, as discussed in the comments that a session is required for the channel entries API to work. grumble You'll need to fake it like this if you're going to do this from a CRON job or some other way that wouldn't already have a logged in member.
$this->EE->session->create_new_session($member_id);
$this->EE->session->fetch_session_data();
$this->EE->session->fetch_member_data();