String generator based on a wildcard
Python 3, 511 bytes - 10% = 459.9
It's early morning over here so golfing mode hasn't quite kicked into my system yet, but it was a really fun-looking problem so I thought I'd try it anyway.

from random import*
C=0
r=input()
i=0
S=&quot;&quot;
Q=&quot;&quot;
while i&lt;len(r):
 c=r[i]
 if i&lt;len(r)-1:d=r[i+1]
 if&quot;]&quot;==c:
  C=0
  if d not in&quot;*?{&quot;:S+=choice(Q)
 elif&quot;[&quot;==c:C=1;Q=&quot;&quot;
 elif&quot;*&quot;==c:
  while random()&gt;.2:S+=choice(Q)
 elif&quot;?&quot;==c:S+=choice(Q)*randint(0,1)
 elif&quot;{&quot;==c:
  a=&quot;&quot;
  while r[i+1]!=&quot;}&quot;:a+=r[i+1];i+=1
  S+=&quot;&quot;.join(choice(Q)for _ in range(int(a)))
 elif&quot;}&quot;!=c:
  if&quot;-&quot;==d:Q+=&quot;&quot;.join(chr(x)for x in range(ord(c),ord(r[i+2])+1));i+=2
  else:
   Q=C*Q+c
   if not C and d not in&quot;*?{&quot;:S+=choice(Q)
 i+=1
print(S)

I'm claiming the &quot;multiple matches, inside each group&quot; bonus. You can try it out like so:
[abA-C0]*