1.Do I have first to be good at making normal apps
Probably. In order to program you need to know how to program.
If you don't know how to program then it would be hard to program an app. If you have some programming knowledge but not enough knowledge to make the thing you want to make, you will need to increase your knowledge so you can do the thing, or you will need to use a library that will do that thing so you don't have to.
Ask yourself if you can program the thing you want. Developing for a mobile device is just one more thing in the long list of things needed to make a program. If you cannot make all the parts then you will need to acquire the skills in order to fill in the gap.
So you need to come up with a list of stuff your program needs. Do you know how to program the graphics, animations, scene graphs, levels, and other resources necessary for your game? If you don't, then adding a mobile device is just adding yet another item to the list of things you don't know how to do. It is yet another thing to learn.
2.Is it better to start with some engine like cocos 2d or unity? Or make something custom (I'm not a big programmer, I just know some basics about java and C++). By custom I don't mean creating own big engine but using for example some basic, build-in options.
It can be better, or it can be worse. If your app is a simple game like tic-tac-toe then you will probably have an easy time using the Canvas to draw your shapes on. If your game involves complex rendering techniques that you don't know how to write then you may be better off using a library to do that for you.
3.Are all game buttons are made/placed with XML? Generally, how much items/menus/HUD of game are made with XML?
This is a misunderstanding of XML. XML is not a user interface tool. XML is just a file format used to store data. It is convenient because many tools and libraries support it for data exchange. XML is a container format, it is up to you and your application to what data you store within it.