For 1/, you can use refraction. See PBR Refraction roughness (blurriness) for eg. If you are loading from a gltf/glb file, you can use the KHR_materials_transmission extension in your material.
Regarding 2/, maybe you can use a DynamicTexture
. Eg: Writing text on top of a cylinder - #4 by Blake. Or use a texture GUI for a mesh: https://playground.babylonjs.com/#ZI9AK7#1