Lego does not hold patent to basic Lego brick anymore. So you can use those. Colors and specific models might be different story.
Optimization strategies just depends how dynamic those models are. If they rarely change then you have exactly same problem that every Minecraft clone has. This is good thing because there are lot’s of good material out there. There are also good algorithms for this kind of geometry. Just to save your efforts I can say that you can’t treat those bricks as draw calls. Even instancing is not good enough. You need to build big chunks and remove all invisible geometry from interiors. This is well studied problem so don’t try to reinvent wheel here.