Well, as far as I am concerned, I would say nothing is mandatory, before you start learning Javafx. Just a small knowledge of JAVA
would be enough (just the basics)
For Javafx learning resources, Oracle has one of the best available resources, enriched with lucrative examples, which will make your Journey of learning Javafx fantastic.
The fxml files are basically the UI which can be written using XML and can be loaded in your code. This makes your application follow the MVC rule. Though initially, I would recommend to spend sometime constructing your UI using java code only.
For more info on FXML
Java vs JavaFX Script vs FXML. Which is better way of programming in JavaFX?
Tutorials on Javafx
http://docs.oracle.com/javase/8/javase-clienttechnologies.htm
For Beginners, Getting Started with JavaFX is very important !
http://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFXST784
Tutorial on Scene Builder i.e. making fxml files for your application,
http://docs.oracle.com/javase/8/scene-builder-2/get-started-tutorial/overview.htm
Tutorial on FXML
https://docs.oracle.com/javase/8/javafx/fxml-tutorial/