1) Are there any adverse effects that the above window function can have?
It can cause severe performance degradation, as mentioned before.
2) Are there any cases where the count would return incorrectly?
It could return incorrect result if there are some rows with table.id = NULL . count(table_field) returns the number of rows, where table_field is not NULL.
3) In general, is this an appropriate use-case for using window functions?
It does the job => it is an appropriate use-case for using window functions.
If this query causes performance degradation and you do not need the exact count of rows, it is better to use something from http://wiki.postgresql.org/wiki/Count_estimate or google for "fast postgresql count".