Firstly, what is being displayed as the cover for the wrong book? Saying it is wrong doesn't help much. But telling us what you are seeing and why you think it is wrong lets us know what is happening so we can explain what you are seeing and make suggestions as to how to get what you want.
As you are sideloading the book as an epub, the Kobo devices simply render the first page of the book and use that as the cover. If that is displays a cover image, then that will be used. If the first page is text, that will also be used. Because of this, the name of the cover image is unimportant so long as it is used correctly in the code for the first page. The code you posted is basically what I use with no problems.
There are of course some gotchas.
The device generates and saves the covers for books on the main memory as it needs them. If you replace the book, the covers are not regenerated from the book. The KoboTouch driver in calibre should delete the cover images when you resend a book. But, the device also caches a few covers in memory. That means that if you resend the book and remove the saved cover images, the device might still be using an old version of the cover. The cover will drop out of the cache after some time or if the device is restarted.
As you are using calibre, you can configure the driver to generate and send the cover images with the books. In this case, it uses the cover that is in the calibre metadata, not what is in the book. And you can use my Kobo Utilities plugin to remove or upload the cover images as a separate step.
As to where the book opens, that is defined in the book code. For the Kobo devices, epubs are opened to the first ToC entry. So, if you add the cover to the ToC, it will open to it when you first open the book. The way I do this is to add a hidden heading of to the cover page. So, I add:
Code:
<h1 class="hidden">Cover</h1>
And in the stylesheet, I have:
Code:
.hidden {
display: none;
}
After adding this, I regenerate the TOC.