Well, welcome
First out, DBP unfortunately is not object oriented. All sorts of built-in entities are handled using ID's. That said, that id can basically be though of as a reference to the entity it repressents.
By naming variables holding the id's there shouldn't be much of a problem; for example:
ball = 1
make object sphere ball, 100.0
position object ball, 0.0, 50.0, 0.0
1) As I just said.
It is easy enough to write a function that finds a free object / image / etc. id by randomly testing a number a couple of times, whereafter it resorts to a linear search from the last random index. For most actual cases, the random function alone should find a free id within two jumps (most entities, save plugins, memblocks, files and bitmaps, can have ~2.1 billion different ID's, I think).
For the particles, you would set up an array holding the id's of them, which you preferably obtain through your free id-finding function. Something like this:
dim particles(499) as dword
for p = 0 to 499
particles(p) = findFreeSprite()
sprite particles(p), 0, 0, spriteImageOfChoice
next p
2) Unfortunately not.
3) You'll have to write any plugins on your own.
There's a tutorial supplied with DBP that tells you how to do this using Visual C++. The actual plugin making isn't too hard, but you naturally need to be familiar with the C++ language in order to follow said tutorial. It would do to be pointed out that you can however access the DBPro core commands from within your plugins, so it is really just a matter of rewriting the loop types and a slightly different syntax, if you were refering to make a plugin out of a successfull DBP project.
On the whole, DBPro doesn't support precompiled libraries or that kind of things.
Edit: Oh yeah, regarding the id numbers, you can adjust your findFreeEntity functions to also create said object, and there you could get a slightly more "dynamic look" on your code.
Something like this would be possible:
ball = makeObjectSphere(100.0)