Your rules need an [L] flag on the end, especially if there are any rules after them.
They can also be easily combined into a single more-specific rule:
RewriteRule ^(production/)?comic/([^/]+)/?$ comic.php?id=$2 [L]
A couple of additional points here to clarify...
1) You cannot "rewrite URLs." If you want the links like domain.net/production/comic/0001 to appear on your HTML pages, then edit those pages (or the script that produces those pages) to link to URLs in that format. Then internally rewrite those requested URLs to the correct script filepath, as in the code you posted.
The on-page changes actually "change" the URLs, and the mod_rewrite rule then connects requests for those new URLs to the script, so that content can be served.
2) Assuming that you've already got mod_rewrite set up and enabled, if you request the URL http://example.com/comic/0001 from your server, then content should be delivered by comic.php for a GET value of "id=001".
If that's how you're testing, and the first point above is understood, then try dumping all the PHP variables to see if the id got 'lost' somewhere. This can happen if the result of the missing [L] flag is to move the QUERY_STRING variable value to REDIRECT_QUERY_STRING.
Also, consider that the script itself could retrieve the id directly from the originally-requested URI, instead of form the 'copied' query string.
Jim