Using multiple loops in a WordPress template can be necessary and confusing.
Let’s say that you want to list your posts on the homepage as per normal, and then also display a list of testimonials for example, somewhere else in the page. You could do something like the following:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
// blah blah content goes here
<?php endwhile; endif; ?>
// Get the last 5 testimonials posts
<?php query_posts('category_name=testimonials&posts_per_page=5'); ?>
<?php while (have_posts()) : the_post(); ?>
// Testimonial posts go here
<?php endwhile;?>
The problem I’ve encountered from using SEO plugins, such as SEO platinum is that with using the query posts function AFTER your main loop is that it appears to reset the metadata information associated with the main loop and bind it to your secondary loop. For SEO this can be disastrous, title and meta description will be associated with the wrong posts and depending on your template, will be duplicated on most / all of your pages.
From my experience the simplest way to get around this is using the get_posts() function. Using something like the following:
<?php
global $post;
$testimonials = get_posts('numberposts=5&category_name=testimonials');
foreach($testimonials as $post) :
setup_postdata($post);
?>
// echo permalink and title
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endforeach; ?>
This method works well for me, if anyone else has another way that is better please share.