So in your case, I'd say it's safe to use unsigned tinyint.
Now that I think about, I have yet to see a forums have anywhere close to 255 forums+categories.
Just another decision you must make.
Also, in your threads table, you should replace thread_author with author_id or something along those lines. Where author_id will link to your users table.
threads
...
author_id (FK)
|
|
users
|
|
user_id (PK)
...
We do this to normalize your data. So for example, you may wish to include a feature where the administrator can change someones username. What would have happened if you hard coded their username to each thread/forums post they made? What are the advantages of linking the threads table to the users table?
Also, shouldn't the thread_sticky column from the threads table be a bit or even tinyint(1)?