Should I use select count(*) for counting records or having a field like comments_no for tables like post, comments?
How frequent do you need to perform this query?

If it is very rarely, then, perhaps it doesn't matter. And you could do "SELECT COUNT(1) FROM ...", do no need to use "SELECT COUNT(id)". SELECT COUNT(id) is not necessary in your case. Please refer here for more about when to use SELECT COUNT(1) etc.
As pointed out by Justin Cave above, does it need to be accurate all the time?

If you need it to be accurate, you might have to suffer the cost of the query.

If not, perhaps you could consider caching the value and only perform the query once every time period (once per 5 seconds?)