afther you beat all the johto gym leders.
In HeartGold you can catch Kyogre.
yes you can also catch them in soul silver.
there are many legendary Pokemon in Pokemon heartgold, but the best is HO-OH
Battle the legenary red than catch kyogre
You can't. They all run away and you have to run around the region to try to catch them. In the wild grass.
I put a link to a guide all about legendary pokemon in HeartGold in the related links.
It's not the "last" Legendary Pokemon that you can find in Pokemon HeartGold, but most people usually catch that one last given that you need to have both Kyogre and Groudon in your party for Professor Oak to give you the Jade Orb to get to Rayquaza.
In Pokémon HeartGold, the Legendary Pokémon that you can catch in "HeartGold" are Articuno, Zapdos, Moltres, Mewtwo, Raikou, Entei, Suicune, Lugia, Ho-Oh, Latias, Latios, Kyogre and Rayquaza however you can only get Latios in "HeartGold" via the use of the Enigma Stone and in order to get Rayquaza, you also need to catch a Groudon that was caught in the Embedded Tower in Pokémon SoulSilver.
You can't catch Rotom in heartgold.
Articuno
mew
You have to defeat the elite four then you can catch the legendary