I'm not sure if it's a good idea.
This sounds like a perfectly good idea for a start. Apparently you plan on dumping directly your struct in binary data files: as Evan said, this is a commonly used approach. It's compact and efficient, but it has quite a few pitfalls:
- It's hard for a human being to read them.
- It's hard to find differences between versions of the same data file.
- It works for POD-types but will get you into trouble for anything more object-oriented.
- For multi-platform games, due to the variety of computer architectures out there (e.g. endianness), C++ offers you no warranty that data files will be compatible between platforms.
- And probably more.
Advanced game engines usually use binary data files only for the final game for performance reason, but use a more "human-friendly" text format for development. It's perfectly feasible to support both at the same time and switch between the two when required (do some research about serialization if you want to know more, e.g. see this question on GDSE).
Also I recently made a question about events and was answered something about scripting languages like LUA, is this related to the enemy positions too? Could I create a file in a scripting language with them?
Yes. You can use a scripting language to define this type of data. I've seen a few engines doing that and it works quite well. Another approach is to use a static, data-only text format (.ini, XML, JSON, something custom...) and write or reuse a parser for it.