1)
var %a = $1-, %q = $regsub(%a,/\bi\b/g,I,%a) $regsub(%a,/\bid\b/g,I'd,%a) $regsub(%a,/\bim\b/g,I'm,%a)
This is just one line, you can add as many $regsub entries as you want. The variable %q is just garbage (a number for each regsub entry with the number of replacements), you just display %a
A short introduction to regex for mIRC might be advised

For the first: \b means word boundary, the empty gap between a letter (a-z) and a non-letter (digit, space, other symbol) or the other way around. \bi matches i or iukgj or i2 or i: but not ai
The / /g means to replace all entries, not just the first one.
2) Add all cusswords to a hash table:
:make hash
hmake cuss 20
; add first entry 'cussword1' to hash cuss with value 30 (seconds)
hadd cuss cussword1 30
hadd cuss cussword2 60
The on text script:
on *@:TEXT:*:#channelname: {
var %time = 0, %t = $strip($1-)
while ($regex(%t,\b([a-z]+)\b)) {
if ($hget(cuss,$regml(1)) inc %time $v1
%t = $remove(%t,$regml(1)
}
if (%time > 0) ban -ku $+ %time $nick Bad words: %time seconds ban
}
3) The write -w searches a previous line with that nick and
replaces it with the new line. This means the previous action or that before aren't in the file anymore.
4) I have no idea what a centisecond is, but fractions of seconds don't really matter when I've seen messages be delayed 30 seconds and more. Needless to say, I wasn't winning that trivia game then, by the time the question arrived, the time was already up on the bot's side...
5) Since the number of bans isn't sent beforehand, you'll have to use some raw handler to catch the ban list, store it in a hash table or a file or something and when the end is reached, you can calculate the number of bans and display that message and list them.
6) It's also a hash table task I guess:
alias uniqueusercount {
hfree unusli
var %con = $scon(0), %count = 0
while (%con > 0) {
scon %con
hmake unusli 40
var %ch = $chan(0)
while (%ch > 0) {
var %chan = $chan(%ch), %n = $nick(%chan,0)
while (%n > 0) {
hadd unusli $nick(%chan,%n) 1
dec %n
}
dec %ch
}
inc %count $hget(unusli,0)
hfree unusli
dec %con
}
echo -s A total number of %count different nicks found in all channels on all networks
}
Loop over all connections, channels and nicks and add them to hash table, the count number of items in hash table. Same nicks on different connections are counted double.