Good news! JOIN clause worked marvelously! Well, sort of. The first posts of each thread are properly linked to their thread, which was the hardest part.
Code:
$lastxdevels1 = $db->query_read("
SELECT thread.threadid, thread.title, thread.postusername, thread.replycount, thread.lastposter, thread.lastpost, thread.views, thread.attach, post.pagetext
FROM " . TABLE_PREFIX . "thread
LEFT JOIN post AS post ON(post.postid = thread.firstpostid)
WHERE forumid IN ($forumdevel1)
AND thread.visible = 1
order by thread.lastpost DESC
LIMIT $limitdevel1
");
Bad news, Javascript does not like thread titles or posts with apostrophes or quotes. If any are present, it breaks the javascript mouseover entirely (it simply doesn't show up). This is a huge problem because it's very common to have at least one apostrophe in a thread title, let alone an entire first post.
Taking a look back at the mouseover code itself:
Code:
$lastxdevelt1.="<div class='smallfont'><a onmouseover=\"Tip('<b>Title:</b> $lastxdevel1[title]<br/><b>User:</b> $lastxdevel1[lastposter]<br /><b>Last Post:</b>$agdate1<br/><b>Preview:</b>$lastxdevel1[pagetext] <br/>')\" onmouseout=\"UnTip()\" href='showthread.php?t=$lastxdevel1[threadid]'>$lastxdevel1[title]</a></div>";
I backslashed all the quotes for the code to work. But with something dynamic like $lastxdevel1[pagetext], I'm not sure how to remedy that.
So two things are left. I'm going to try and create a conditional statement that if lastxdevel1[thread.title] or lastxdevel1[pagetext] contain a certain string (quote or apostrophe), they get replaced with a . And second, I need to find a way to set up ellipses for the lastxdlevel[thread] and lastxdlevel[pagetext]. They way they are now, thread titles that are too long cause misalignment, and if the first post of a thread is long, the mouseover preview takes up the whole page.

Made some huge progress today thanks to you!