As stated in the film Silva was always one step ahead of them. Bond implies that there was a mole at MI6, and if M put her safety in the hands of MI6 she would surely be killed by Silva.
The only person Bond trusted at MI6 was Q, but he knew that no matter where he took M that Silva would quickly follow. So he asked Q to create a fake digital trail to take Silva on a wild goose chase, and this gave Bond time to escape to SkyFall.
Bond took M to SkyFall because he had no where else to go, and it was the last place anyone would look for them. While it might not make sense to hide from Silva at SkyFall. It was a good place for Bond to hide from MI6.
I'm not sure Q's job was to get Silva to SkyFall. I don't think Bond ever told him where they were going, and to ensure they were not tracked digitally they switched cars.
When Q was entering the data in the computer for Silvia to follow. There were three people (including Q) in the room at the time. One of them must have tipped Silvia off to Bond's location.
EDIT: Thugs show up at SkyFall without Silvia. It's possible they were there to search for Bond, and when they started fighting one of the might have contacted Silvia. This explains why he shows up later arriving via helicopter.