In Drupal 6, it was easy to insert a block into a template with the following code:
$block = module_invoke(\'views\', \'block\', \'view\', \'block_name\'); print
Have a look how Drupal does it in _block_render_blocks. The result of that function gets passed to drupal_render.