Form design can often be very context sensitive unless it is a well known design pattern (e.g. address input where you can derive certain available values from user input like postcode or country information).
In addition, you need to structure the flow of the form design based on the dependencies of the input. From what you describe it sounds like there are five text input and three are mandatory so these should probably be right at the beginning if they are important and easy to provide. However, if they are difficult to work out I would suggest putting the optional inputs at the beginning instead so that when the user gets to the more difficult and mandatory inputs the effort required is reduced.
Again it is hard to comment without knowing the actual information but as far as best practices go, making it as simple for the user as possible and to reduce the potential of errors in input should be on the back of your mind in the design and testing process.