Hi again, Lynn,
I just checked this year's summer ferry schedules, and it would be impossible to get from Mull to Skye by ferry on the evening that your excursion ends. The last ferry from Tobermory leaves at 6:00 p.m.; the last ferry from Mallaig leaves 10 minutes later. So that eliminates going from Mull to Skye that way (If you're going to Skye.). If you're driving on to Portree the same night, you'd have to take the ferry from Craignure to Oban, then head north to Invergarry on the A82. This would still leave you at least two to three hours to reach Portree from Invergarry.
If you still plan on going to Skye, I'd recommend staying overnight in Tobermory, then taking the ferry to Kilchoan in the morning. From there, make your way up via Salen to the A830 at Lochailort, then turn left for Skye. If you're heading for Fort William, turn right.
If you're heading for the Great Glen, you could take the Fishnish to Lochaline ferry, the A884 to Strontian, then the A861 to Ardgour for the Corran Narrows ferry to Corran, where you can pick up the A82, south of Fort William. You'd be crossing Loch Linnhe, which is the southernmost loch in the Great Glen.
As fas as charming towns, there aren't many between Oban and Fort William. Oban isn't too bad, and has a good selection of accommodation and places to eat. It's not exactly charming, however. Fort William is definitely not charming! North Ballachulish is a decent place for an overnight, but it's small and very limited for food and lodging. One advantage is that it's close to Glencoe, if you're going there.
If you're looking for charming, I'd recommend staying overnight in Tobermory, before heading to the mainland the following day by one of the three ferry options.
Best wishes for your plans! Don't get too stressed!