WordPress outputs a lot of crap in the head section of the html. So if you want to get rid of them, you shouldn’t just delete the call to wp_head() in your header.php file as this will break plugins which uses that function (eg All In One SEO Pack, Platinum SEO Pack etc). What you should do is place the following lines in your theme’s functions.php file right after the <?php> tag:
remove_action(‘wp_head’, ‘feed_links’, 2);
remove_action(‘wp_head’, ‘feed_links_extra’, 3);
remove_action(‘wp_head’, ‘rsd_link’);
remove_action(‘wp_head’, ‘wlwmanifest_link’);
remove_action(‘wp_head’, ‘index_rel_link’);
remove_action(‘wp_head’, ‘parent_post_rel_link’);
remove_action(‘wp_head’, ‘start_post_rel_link’);
remove_action(‘wp_head’, ‘adjacent_posts_rel_link’);
remove_action(‘wp_head’, ‘check_and_publish_future_post’);
remove_action(‘wp_head’, ‘wp_print_styles’);
remove_action(‘wp_head’, ‘wp_generator’);
remove_action(‘wp_head’, ‘rel_canonical’);
If you want to just remove the comments rss feed, then include just remove_action(‘wp_head’, ‘feed_links’, 2) and note the 2 in the argument list. If you don’t include that, it won’t work.
If you have set your blog as private (I would like to block search engines, but allow normal visitors), then you will see that WordPress will automatically include a “noindex, nofollow” for the robots meta tag. You need to change it to be publicly visible to everyone by going into Settings and Privacy in the wordpress admin panel. Otherwise you’ll see your pages dropping out of the index quickly.
UPDATE
If you want to delete the previous and next post links from wp_header in WordPress 3.0, you will have to remove the following:
remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0 );
If don’t see the links removed, you need to look at the default-filters.php file (found in wp-includes) and check how the add_action have been written and use the same format (including the parameters) to remove them. You can just copy the whole line and replace add_action with remove_action.