Can a module provide a default block with editable content? (editable through the standard block interface)
Drupal adds custom blocks in a form submit function using database queries directly, it doesn't expose an API for that particular function unfortunately, so you'll have to write/copy the code manually.

You can find all the code you need in block_add_block_form_submit(). 

You insert the custom block into the database like so:

$delta = db_insert('block_custom')
  -&gt;fields(array(
    'body' =&gt; '&lt;p&gt;Some markup&lt;/p&gt;',
    'info' =&gt; 'Block description',
    'format' =&gt; 'full_html',
  ))
  -&gt;execute();


Then you need to make this block available to all installed themes:

$query = db_insert('block')-&gt;fields(array('visibility', 'pages', 'custom', 'title', 'module', 'theme', 'status', 'weight', 'delta', 'cache'));
foreach (list_themes() as $key =&gt; $theme) {
  if ($theme-&gt;status) {
    $query-&gt;values(array(
      'visibility' =&gt; 1, // visible
      'pages' =&gt; '', // list of pages 
      'custom' =&gt; 1, // This is a custom block
      'title' =&gt; 'Block title',
      'module' =&gt; 'block', // The block module handles custom modules
      'theme' =&gt; $theme-&gt;name,
      'status' =&gt; 0,
      'weight' =&gt; 0,
      'delta' =&gt; $delta,
      'cache' =&gt; DRUPAL_NO_CACHE,
    ));
  }
}
$query-&gt;execute();


You'll want to put that code either in hook_install()/hook_enable() if you plan to do this in a custom module, or hook_install() if you're doing it in an install profile.