There isn't much performance difference between Haswell and Skylake. Intel uses a tick-tock update cycle, where they redesign the CPU one generation, then shrink its lithography the next. So even though it looks like they're two generations apart, from a design and construction standpoint they're just one generation apart. Consequently, the performance difference is slight, with Haswell actually beating Skylake in certain functions.
https://www.pugetsystems.com/labs/articles/Haswell-vs-Skylake-S-i7-4790K-vs-i7-6700K-641/
The obvious reasons for picking Skylake are lower power consumption and temperatures (mostly irrelevant on a desktop), a better integrated GPU (irrelevant since you're adding a dedicated GPU), USB-C support, and DDR4 memory support. The last one doesn't really make any significant performance difference in real-world tasks at this time. I just include it because it means you can take memory you buy for a system today, and potentially re-use it in a system you buy 5 years in the future.
The vast majority of VRAM is taken up by textures. You're probably not going to be doing 4k gaming on a 1060, so 3GB will probably be just fine since you can skip the 4k textures. That said, the price difference between the 3GB and 6GB version is probably trivial, so I would second the above advice to just save up a little more and get the 6GB version. A 1080p or 1440p game probably won't need more than 3GB (using 2k textures), but if you add a ton of texture mods I could see you exceeding 3GB.
The 2 core vs 4 core thing doesn't matter for some games, makes a difference for others. It depends on how well the game is coded to take advantage of parallel processing. Hyperthreading isn't really that useful in most real-world use cases. Hyperthreading lets you use unused parts of the core as if were a separate core. But here's the thing - if you need extra cores, it's probably because the cores you have are already being maxed out doing a particular operation. And if the extra virtual cores are trying to do the same operation in parallel, well you can't hyperthread it because those parts of the physical cores are already in use. It takes a very eclectic and parallelizable computing task to really take advantage of hyperthreading. Video rendering and certain compression algorithms are about the only real-world tasks where you'll see a big benefit from hyperthreading. So in the games where more cores help, the i5 will be a lot better off than the i3.