I think it's called passing an argument.
So far hatbocs is the closest to being on the right track.
Look up HTTP GET for more on what it is.
Basically, its one of HTTP's primary two methods for passing information to a page that's about to load (the other being HTTP POST, which is pretty much identical but you don't see the variable in the url). The filename is still newthread.php, however where you see this:
?do=newthread&f=103
We can break that down - it is passing two variables to newthread.php:
The first is do. It is going to have the script set something to the value "newthread", so the script knows it's making a new thread.
The other part, f and 103, is likely the forum index - that'd tell the script to make it in board # 103, otherwise known as Programming Help
So hatbocs was right, it's passing an argument. It's just got a name to go with it too
Edit: Forgot to explain the ? mark - the ? mark is so the webserver knows where the filename ends, and where the HTTP GET begins.
Edit 2: AAAAAND forgot one more thing: that is not restricted to php. You'll see it with html and other filetypes as well (although beyond html, php, and maybe a .js file I haven't seen it used much - those are the main filetypes you see being used that need an argument passed to it).