Technically, I believe level01.level01 is referring the level01 object within the level01 package (or uasset file). In UE4, we use a single asset per package system, but there actually are specific instances where the uasset file actually contains more than one object. For instance, a Blueprint asset actually contains the Blueprint object and the class generated when compiling the Blueprint. All the user ever sees is the single asset, but there is more going on behind the scenes there.
The reason you can’t have a Material and Texture with the same name in the same folder is because of the single asset per package system. Every asset is contained in a .uasset file. So, if you had a Material named Bricks and a Texture named Bricks, they would both be Bricks.uasset. You can’t have multiple files with the same name in the same folder so you can’t have two assets named the same in the same folder.