I studied programming as a c# developer, we were using ADO.NET and SQL-Server also we studied ASP.NET, I took my degree with a very honorable mark I wrote many freelancing software by my own(all hand coded) but I don't feel like it's so professional and errors free, for that i don't really apply for jobs here since i never worked in a real company how can i know in which level am I? because compared to engineers here I'm really almost nothing
You can definitely apply for a junior position, they will not expect your code to be perfect. The most important thing is that you get out there and work in different positions so you can see where your ability is at.
I was in a similar position, I thought I would be terrible at my job being a graduate with no work experience, but it turns out I am much better than I thought. It is common for high achievers to have 'Impostor Syndrome' where you don't think you are good enough and that when you do do well it is a fluke.
Yes, at the right company. A junior job can mean different things at a company with 40 people than one with 1000 people. For some places it is the same as entry level.
For any job you're applying for, carefully read the description and decide if you can do that work. If you can, you are a good fit for application. If you can't, but feel that you would be able to with some additional work, perhaps apply anyway and say so in your cover letter.
Or, if you find there is a set of skills that often disqualifies you from applying, perhaps obtain those skills.