Yes, and no

Yes - if you "/writeini <ini> [mytopic] <item> <data>", "$readini(<ini>,[mytopic],<item>)" will return <data>.
But, no - because the "~" char is used internally for both "[" and "]". All three chars ("~" "[" and "]") will be equivalent.
In the concrete case with the ~-char left aside (rarely allowed in nicknames) the problem is the indifference of "[" vs "]":
"[nick]" and "]nick[" - two separate nicknames in the IRC world - will share the same ini-topic.
//writeini test.ini [test] x a | writeini test.ini ]test[ x b | echo -a $readini(test.ini,[test],x) vs. $readini(test.ini,]test[,x)
Edit: But my suggestion won't solve the problem either, it would create ~nick~ for item as well.
Because rounded brackets usually are not allowed for nicknames the OP might use, as a workaround something like:
alias -l sb.writeini { writeini $1 $sb.rep($2-3) $4- }
alias -l sb.readini { return $readini($1, $sb.rep($2),$sb.rep($3)) }
alias -l sb.rep { return $replace($1-,[,$chr(40),],$chr(41)) }
And:
- /sb.writeini instead of /writeini
- $sb.readini() instead of $readini()