The Skye Circular is my favourite rail trip.
I suggest staying overnight in Inverness and taking the 0855 to Kyle (arrives around 1135 from memory).
The bus service is a bit sparse, especially before the summer timetable comes in during May and they seem to be linked to the school holidays, so do check out the times before you set off. Most buses require a change at Broadford although during summer I seem to remember there is a direct service. The bus isn't expensive - less than £5 iirc.
More ferries run during the summer months, in winter there are only two sailings a day. The ferry takes half an hour and is around £4 for a foot passenger - you can pay at the office before departure.
Depending on what time of year and which ferry you get you have a couple of options for the train. You can depart Mallaig at 1605 and arrive Glasgow 2122 or (my personal favourite) is to depart 1815 arrive Fort William 1938 then take seated portion of the sleeper from Fort William at 1050 arriving Glasgow Queen Street 0014. Normal 'day' tickets are valid in the seated carriage of the sleeper. If you choose to do this then make sure you do it in high summer when it is light until 2300.