You can control the order using the keyword ASC and DESC (ie, order ascending and descending respectively). ASC is the default, so in this case your query would be: "SELECT topicName, topicDate FROM topics ORDER BY topicDate DESC"
On the date issue, I assume you're saving the dates as MySQL dates? If you do so, change it. 😉
You'll want to work with timestamps, which are regular integers saving the number of seconds since the start of the UNIX Epoch. They offer a pretty easy way to work with dates, but more importantly, most PHP functions use them. If you've got a timestamp, you can use the function date() to format a string, for example (IIRC - refer to the manual for details/corrections) date("F j, Y", $timestamp) would return a string formatted the way you want. As it is now, it's not really a problem either, it just introduces another step, using the function strtotime() to convert your time string "2002-09-09" into its timestamp version.
Some code:
if ($saved_to_db_as_timestamp) $timestamp = $query_array['timestamp'];
else $timestamp = strtotime($query_array['sqldate']);
echo date("F j, Y", $timestamp);
😎