One of my coworkers used to do that full time. So when someone at work needed new counters we all participated in making new ones.
There is a reason that nice ones are about as expensive as engineered "granite" when installed. Making the molds takes some time and effort, but it's not bad if you're handy. Melamine works really well. It produces a nice smooth surface. If you need a cut out for a sink, styrofoam with a smooth layer of packing tape on the edge works really well. A bead of silicone seals things up and leaves a nice rounded edge.
You will need rebar, especially where you have a sink or other cut out.
Next hurdle is getting the mixture absolutely right. If you've got an aggregate you want to expose for a terrazzo look, there are a lot of little secret tricks to getting that right.
If you want smooth, you need to grind it. That's not very hard, but it's dusty.
Finally, installation can be tricky. Your slab will want to crack if you move it into another orientation or leave a part of it unsupported, even if briefly. This is especially true around openings and holes. It's not insurmountable at all though, and if you don't mind putting in the time, it's pretty cool.
Also, your counter tops should be sealed. There are food safe sealers specifically for this. Like the other steps, there's a bit of an experience factor. Things like temperature and humidity make some difference in how well everything goes.
Concrete is not as impervious as real granite, or the quartz and resin "granites". It stains about as easily as marble. So don't leave spills on it for too long. It's more heat resistant than the plastic based stuff (Corian, etc.) though.
If you've got the time and want to do it for the fun of doing it, go for it. It's a cool process, but it takes longer than you might expect. On the plus side, almost everything is cheap enough that you can make them twice and be under what you would have spent on something else.